Mongodb 对对象数组进行计数
如果我有有效载荷:Mongodb 对对象数组进行计数,mongodb,mongoose,Mongodb,Mongoose,如果我有有效载荷: { "objs": [ { "_id": "1234566", "some":"data" }, { "_id": "1234566", "some":"data" }, { "_id": "2345666", "some":"otherdata" }, { "_id": "4566666", "some":"yetotherdata" }, ] } 获取id为1234566的所有对象的
{
"objs": [
{ "_id": "1234566", "some":"data" },
{ "_id": "1234566", "some":"data" },
{ "_id": "2345666", "some":"otherdata" },
{ "_id": "4566666", "some":"yetotherdata" },
]
}
获取id为1234566的所有对象的最佳过滤器是什么?查找具有id为1234566的对象的所有文档: 为文档筛选具有指定_id的obj项。假设您的文档具有_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}}
])
如果您想根据不同的字段进行分组,可以在$group阶段中更改_id。是否更改{u id:1234566}过滤器?
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}}
])