使用投影进行Mongo查询

Jam*_*pam 2 mongodb pymongo mongodb-query

在mongo中如果条件匹配,如何从列表中返回所有匹配dict元素.

这是我的数据:

    {"packages": [
       {"package_name" : "abc", "installed_date" : "2016-08-03"},
       {"package_name" : "def", "installed_date" : "2016-08-04"},
       {"package_name" : "ghi", "installed_date" : "2016-08-03"},
       ]
    }
Run Code Online (Sandbox Code Playgroud)

我该如何查询以获取匹配的所有字典 {"installed_date" : "2016-08-03"}

我试过了:

db.resource.find({packages: {"$elemMatch": {installed_date: "2016-08-03"}}})

但这给了我所有的数组元素.我想得到匹配的dict元素{installed_date: "2016-08-03"}

谢谢

小智 5

尝试mongo聚合:

db.resource.aggregate([
  {'$match':{'packages.installed_date':'2016-08-03'}}, 
  {'$unwind':'$packages'}, 
  {'$match':{'packages.installed_date':'2016-08-03'}}, 
  {'$group':{'_id':'$_id', 'packages':{'$push':'$packages'}}}
])
Run Code Online (Sandbox Code Playgroud)