如果我有有效载荷:
{
"objs": [
{ "_id": "1234566", "some":"data" },
{ "_id": "1234566", "some":"data" },
{ "_id": "2345666", "some":"otherdata" },
{ "_id": "4566666", "some":"yetotherdata" },
]
}
获取id为“1234566”的所有对象的最佳过滤器是什么?
答案 0 :(得分:0)
要查找obj
_id
1234566
为db.collection.find({"objs._id":"1234566"});
的所有文档:
obj
过滤具有指定_id
的{{1}}项目。假设您的文档具有_id
属性。
db.collection.aggregate([
{$unwind:"$objs"},
{$match:{"objs._id":"1234566"}},
{$group:{"_id":"_id","objs":{$push:{"id":"$objs._id","some":"$objs.some"}}}},
{$project:{"_id":0,"objs":1}}
])
如果您想根据某个不同的字段进行分组,则可以更改_id
阶段中的$group
。