【问题标题】:How to flat nested arrays in Mongo?如何在 Mongo 中扁平化嵌套数组?
【发布时间】:2021-08-08 13:19:59
【问题描述】:

我有两个集合,我使用 $lookup 将它们聚合在一起。

聚合后我的$project 结果看起来像这样-

{
  _id: ObjectId('123456789123345678912345'),
  key1: 'value1',
  key2: 'value2',
  key3: [
    ['val1', 'val2'],
    ['val1', 'val3'],
    ['val2', 'val4']
  ]
}

我想将key3下的所有嵌套数组进行扁平化合并,或者换句话说得到以下结果-

{
  _id: ObjectId('123456789123345678912345'),
  key1: 'value1',
  key2: 'value2',
  key3: ['val1', 'val2', 'val3', 'val4']
}

注意:key3 是从我合并到原始文档中的查找集合中导入的,其中包含key1key2

【问题讨论】:

    标签: mongodb aggregation-framework


    【解决方案1】:
    • $reduce循环key3,设置初值为空数组
    • $setUnion 从 reduce 和 current 数组的 inivialValue 中获取唯一值
    db.collection.aggregate([
      {
        $addFields: {
          key3: {
            $reduce: {
              input: "$key3",
              initialValue: [],
              in: { $setUnion: ["$$value", "$$this"] }
            }
          }
        }
      }
    ])
    

    Playground

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多