【问题标题】:MongoDB: Map nested array in aggregate functionMongoDB:在聚合函数中映射嵌套数组
【发布时间】:2020-05-19 00:34:39
【问题描述】:

我正在尝试使用聚合来更新属性名称。当前文档

[
  {
    _id: 5,
    payLoad: {
      grades: [
        {
          grade_: 80,
          mean: 75
        },
        {
          grade_: 90,
          mean: 80

        }
      ]
    }
  }
]

预期文档将 grade_ 重命名为 grade

[
      {
        _id: 5,
        payLoad: {
          grades: [
            {
              grade: 80,
              mean: 75
            },
            {
              grade: 90,
              mean: 80

            }
          ]
        }
      }
    ]

为了实现这一点,我正在尝试映射聚合

db.collection.aggregate([
  {
    $addFields: {
      payLoad: {
        grades: {
          $map: {
            input: "$grades",
            as: "grade",
            in: {
              grade: "$$grade.grade_",
              mean: "$$grade.mean"
            }
          }
        }
      }
    }
  }
])

这不起作用。不确定这个映射是否正确

payLoad: {
            grades: {

还尝试了像payLoad.grades这样的映射

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework


    【解决方案1】:

    这应该可行。

    {
        $addFields: {
            "payLoad.grades": {
                $map: {
                    input: "$payLoad.grades",
                    as: "grade",
                    in: {
                        grade: "$$grade.grade_",
                        mean: "$$grade.mean"
                    }
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-26
      • 2021-06-27
      • 1970-01-01
      • 2015-12-06
      • 2020-12-18
      • 2021-08-21
      • 2020-11-09
      • 2020-01-25
      • 1970-01-01
      相关资源
      最近更新 更多