首页 > 解决方案 > 从 MongoDB 中的所有对象中获取一些值

问题描述

我有一个关于从 mongo db 中获取特定数据的问题。数据库中的数据非常大,其中有很多对象。这些对象具有以下架构:

{
        "_id": ObjectId("XXXX"),
        "app_id": "XXXXXX",
        "title": "The title",
        "os": "OS",
        "crash": [{
                "crash_reason": {
                        "updated_at": "2018-06-28T03:39:47Z",
                        ...many values ...
                },
                "crashes": [{
                        ...many values ...
                },
                {
                        ...many values ...
                }],
                "status": "success",
        }, {
                "crash_reason": {
                        "updated_at": "2018-06-28T03:39:46Z",
                        ...many values ...
                },
                "crashes": [{
                        ...many values ...
                },
                {
                        ...many values ...
                }],
                "status": "success",
        }],
        "status": "success",
}

所以...要获取所有对象,我只是使用我的数据库,然后执行以下操作:

db.crashes.find()

但是,我想获取所有对象,但只能获取特定数据。输出应如下所示(如果可能)。

{
        "_id": ObjectId("XXXX"),
        "app_id": "XXXXXX",
        "title": "the title",
        "os": "OS",
        "crash": [{
            "crash_reason": {
                    "updated_at": "2018-06-28T03:39:47Z" }
                 }]
}

可悲的是,我是 mongo 的新手,并尝试通过文档找到解决方案,但没有成功。我尝试了很多东西,例如:

db.crashes.find([{$group:{app_id: "$app_id",title: "$title",os: "$os", crash: { $first: "$updated_at" }}}])
db.crashes.aggregate([{$group:{app_id: "$app_id",title: "$title",os: "$os", crash: { $first: "$updated_at" }}}])

有可能吗?我也会对以下输出感到满意:-D

{
        "_id": ObjectId("XXXX"),
        "app_id": "XXXXXX",
        "title": "the title",
        "os": "OS",
}

有人可以帮帮我吗?:-)

标签: mongodb

解决方案


尝试以下aggregate查询以返回具有预期字段的最新子文档数据,

db.crashes.aggregate([
  {$unwind: '$crash'},
  {$sort: {'crash.crash_reason.updatedAt': -1}},
  {$group: {
     _id: "$_id",
     app_id:{$first:"$app_id"},
     title: {$first:"$title"},
     os: {$first:"$os"},
     crash: {$first: "$crash.crash_reason"}
  }}
])

推荐阅读