对对象数组进行计数

时间:2014-11-18 18:25:34

标签: mongodb mongoose

如果我有有效载荷:

{
    "objs": [
        {  "_id": "1234566", "some":"data" },
        {  "_id": "1234566", "some":"data" },
        {  "_id": "2345666", "some":"otherdata" },
        {  "_id": "4566666", "some":"yetotherdata" },
    ]
}

获取id为“1234566”的所有对象的最佳过滤器是什么?

1 个答案:

答案 0 :(得分:0)

要查找obj _id 1234566db.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