我有以下问题:
此查询返回 1 个结果,这正是我想要的:
> db.items.aggregate([ {$group: { "_id": "$id", version: { $max: "$version" } } }])
{
"result" : [
{
"_id" : "b91e51e9-6317-4030-a9a6-e7f71d0f2161",
"version" : 1.2000000000000002
}
],
"ok" : 1
}
此查询(我刚刚添加了投影,以便稍后查询整个文档)返回多个结果。我做错了什么?
> db.items.aggregate([ {$group: { "_id": "$id", version: { $max: "$version" } }, $project: { _id : 1 } }])
{
"result" : [
{
"_id" : ObjectId("5139310a3899d457ee000003")
},
{
"_id" : ObjectId("513931053899d457ee000002")
},
{
"_id" : ObjectId("513930fd3899d457ee000001")
}
],
"ok" : 1
}
最佳答案
找到答案
1。首先我需要得到所有的_id
db.items.aggregate( [
{ '$match': { 'owner.id': '9e748c81-0f71-4eda-a710-576314ef3fa' } },
{ '$group': { _id: '$item.id', dbid: { $max: "$_id" } } }
]);
2。然后我需要查询文件
db.items.find({ _id: { '$in': "IDs returned from aggregate" } });
看起来像这样:
db.items.find({ _id: { '$in': [ '1', '2', '3' ] } });
关于mongodb聚合框架组+项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15285795/