【问题标题】:Normalized Object and array in MongoDBMongoDB中的规范化对象和数组
【发布时间】:2021-05-31 04:46:51
【问题描述】:
[
  {
    "data": {
      "id": "123",
      "name": "delta1"
    },
    "property_data": [
      {
        "ser_name": "Insights",
        "ser_value": "10000"
      },
      {
        "ser_name": "plans",
        "ser_value": "50000"
      }
    ]
  }
]

解释property_data 是一个数组。 data 是一个对象。需要将 Array 转换为对象,但问题是如果我在 property_data 上执行 $unwind,我会得到多次 data 对象,而我只需要一次。我想将我的数据结构转换为多个文档,但 data 不应该一次又一次地重复

预期输出

[
  {
    "property_data": {
     "id": "123",
      "name": "delta1"
    }
  },
  {
    "property_data": {
      "ser_name": "Insights",
      "ser_value": "10000"
    }
  },
  {
    "property_data": {
      "ser_name": "plans",
      "ser_value": "50000"
    }
  },
]

【问题讨论】:

    标签: arrays mongodb mongoose mongodb-query aggregation-framework


    【解决方案1】:

    这可以通过一些基本的结构操作来实现,如下所示:

    db.collection.aggregate([
      {
        $project: {
          property_data: {
            "$concatArrays": [
              "$property_data",
              [
                "$data"
              ]
            ]
          }
        }
      },
      {
        $unwind: "$property_data"
      },
      {
        $replaceRoot: {
          newRoot: {
            property_data: "$property_data"
          }
        }
      }
    ])
    

    Mongo Playground

    【讨论】:

      猜你喜欢
      • 2019-10-03
      • 2017-06-15
      • 2013-01-17
      • 2020-05-04
      • 2011-10-24
      • 2015-09-20
      • 1970-01-01
      • 2021-01-20
      • 2018-11-26
      相关资源
      最近更新 更多