简体   繁体   中英

How to filter elements of array in mongodb

i have a document in mongodb:

{
    "company": "npcompany",
    "department": [
          {
           "name": "it",
           "employeeIds": [
               "emp1",
               "emp2",
               "emp3"
           ]
         },
         {
           "name": "economy",
           "employeeIds": [
               "emp1",
               "emp3",
               "emp4"
           ]
         }
    ]
}

I want to find "emp4". In this case i want to get "economy" department data only. If i found "emp1" then i want to get "npcompany" and "economy" datas. How can i do it in mongodb (or pymongo)?

play

db.collection.aggregate([ //As you need to fetch all matching array elements, reshape them
  {
    $unwind: "$department"
  },
  {
    "$match": {//look for match
      "department.employeeIds": "emp4"
    }
  },
  {
    $group: {//regroup them
      "_id": "$_id",
      data: {
        "$push": "$$ROOT"
      }
    }
  }
])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM