mongodb聚合框架组+项目

标签 mongodb mongodb-query

我有以下问题:

此查询返回 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/

相关文章:

ruby-on-rails - 如何在json响应中将mongo id作为字符串返回

arrays - mongodb - 如果数组中的元素之一与查询匹配,则忽略文档

java - 在 Jaspersoft 中处理复杂类型(列表和对象)的正确方法是什么?

CakePHP/MongoDB : Read periodically fails

java - 如何在MongoRepository JAVA SpringBoot中根据子映射中的键获取父对象

javascript - 如何通过一个请求更新数组对象的多个字段?

node.js - 在 Node.js 中使用 findAndModify 时出错

MongoDB:通过计算每个字段的平均值将对象数组减少为单个对象

node.js - MongoDB 返回结果的关联数组

mongodb - MongoDB 可以管理超过 300 MB 的流数据的回滚过程吗?