【问题标题】:How flatten an array of arrays using aggregate如何使用聚合展平数组数组
【发布时间】:2021-02-18 17:29:10
【问题描述】:

我正在尝试使用 MongoDB(3.6) 的聚合框架来展平以下数据:

array = [
  [1899.99, 241.92, 869.99, 696],
  [2301.45, 100],
  [1468.12, 85.9],
  [14.1],
  [268.59, 27.6, 428.51, 173.85],
  [627.29, 241.92, 413.47, 229.74],
  [1687.58, 100],
  [241.11]
]

而我需要的是:

result = [1899.99, 241.92, 869.99, 696, 2301.45, 100, 1468.12, 85.9, 14.1, 268.59, 27.6, 428.51, 173.85, 627.29, 241.92, 413.47, 229.74, 1687.58, 100, 241.11]

我正在使用这个查询:

db.collection.aggregate([
  {
    $match: { code: '11122233344' }
  },
  {
    $project: {
      vencimentos: '$response.operations.expirations.value'
    }
  },
  {
    $unwind: '$vencimentos'
  },
  {
    $group: {
      _id: 'vencimentos',
      vencimentos: { $addToSet: '$vencimentos' }
    }
  },
])

这是查询的结果:

{
  "_id" : "vencimentos",
  "vencimentos" : [
    [1899.99, 241.92, 869.99, 696.11],
    [2301.45, 100],
    [1468.12, 85.9],
    [14.1],
    [268.59, 27.6, 428.51, 173.85],
    [627.29, 241.92, 413.47, 229.74],
    [1687.58, 100],
    [241.11]
  ]
}

有人可以帮助我吗? 谢谢。

【问题讨论】:

    标签: mongodb aggregation-framework flatten


    【解决方案1】:

    考虑到您当前聚合的结果,您必须添加以下步骤才能获得所需的内容:

    {
        $addFields: {
          vencimentos: {
            "$reduce": {
              "input": "$vencimentos",
              "initialValue": [],
              "in": {
                "$concatArrays": [
                  "$$this",
                  "$$value"
                ]
              }
            }
          }
        }
      }
    

    You can test the result here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-25
      • 2020-04-17
      • 2022-01-25
      • 1970-01-01
      • 2021-12-21
      相关资源
      最近更新 更多