在 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"},
]
}
我应该如何查询以获取所有匹配 {"installed_date": "2016-08-03"}
我试过:
db.resource.find({packages: {"$elemMatch": {installed_date: "2016-08-03"}}})
但这给了我所有的数组元素。我想获取匹配 {installed_date: "2016-08-03"}
谢谢
最佳答案
尝试 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'}}}
])
关于mongodb - 带投影的 Mongo 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40066476/