我的聚合管道是一个具有单个字段result的文档,该字段包含一个数组,如下所示:

[
  {
    "result": [
      {
        "meteoEventType": "RAIN",
        "meteoEventLabel": "PRECIPITAZIONE",
        "meteoEventLevel": "LOW",
        "meteoEventLevelLabel": "Forte pioviggine"
      },
      {
        "meteoEventType": "HAIL",
        "meteoEventLabel": "GRANDINE",
        "meteoEventLevel": "MEDIUM",
        "meteoEventLevelLabel": "Probabilità moderata"
      },
      {
        "meteoEventType": "INUNDATION",
        "meteoEventLabel": "ALLAGAMENTI",
        "meteoEventLevel": "LOW",
        "meteoEventLevelLabel": "Probabilità molto bassa"
      },
      {
        "meteoEventType": "WIND",
        "meteoEventLabel": "VENTO",
        "meteoEventLevel": "LOW",
        "meteoEventLevelLabel": "Calma"
      }
    ]
  }
]

我需要实现的是这样的结果,不包括result字段:

[
      {
        "meteoEventType": "RAIN",
        "meteoEventLabel": "PRECIPITAZIONE",
        "meteoEventLevel": "LOW",
        "meteoEventLevelLabel": "Forte pioviggine"
      },
      {
        "meteoEventType": "HAIL",
        "meteoEventLabel": "GRANDINE",
        "meteoEventLevel": "MEDIUM",
        "meteoEventLevelLabel": "Probabilità moderata"
      },
      {
        "meteoEventType": "INUNDATION",
        "meteoEventLabel": "ALLAGAMENTI",
        "meteoEventLevel": "LOW",
        "meteoEventLevelLabel": "Probabilità molto bassa"
      },
      {
        "meteoEventType": "WIND",
        "meteoEventLabel": "VENTO",
        "meteoEventLevel": "LOW",
        "meteoEventLevelLabel": "Calma"
      }
    ]

考虑到我正在使用MongoDB4,我怎么才能go 掉result字段呢?

$replaceWith阶段不能工作,因为result不是文档.

推荐答案

$replaceWith阶段之前,您需要$unwind阶段来解构resultarray.

db.collection.aggregate([
  {
    $unwind: "$result"
  },
  {
    $replaceWith: "$result"
  }
])

Demo @ Mongo Playground

Mongodb相关问答推荐

geoLocation或geoNear为坐标和半径使用let变量

MongoDB更新对象数组

使用 mongo-driver/mongo 使用键/值对中的值表达式查找文档

有没有办法从另一条记录中插入一条记录

对 MongoDB 集合中的对象数组进行排序

查询有关 Go 项目中对象数组的 MongoDb 集合

如何修改 mongodb 中嵌套对象数组中的字段名称/键?

根据聚合管道MongoDB Atlas触发器中的条件更新多个字段

System.FormatException occurred in MongoDB.Bson.dll - XXX is not a valid 24 digit hex string

findOneAndUpdate 和 findOneAndReplace 有什么区别?

将 MongoDB 地理空间索引与 3d 数据结合使用

我怎样才能排序空值在 mongodb 中是最后排序的?

通过 Spring Boot 应用程序访问 mongodb 时的身份验证错误

Docker 内部的 Mongo 身份验证

如何在任意深度查找 MongoDB 字段名称

Django admin 和 MongoDB,可能吗?

Mongo Schema-less集合和 C#

查询 Mongoid/rails 3 中的嵌入对象(Lower than、Min 运算符和排序)

指定在 mongodb .js 脚本中使用哪个数据库

MongoDB 的 MMAPV1、WiredTiger 或 In-Memory StorageEngine 如何 Select ?