如何通过Mongo shell添加带有引用字段的新字段

问题描述 投票:0回答:1

我在

address
中有一个
basicDetails
字段值。我希望通过添加一个名为
address
的新字段将该值带入根字段,因此我尝试通过这种方式在所有文档中添加新的字段地址。但问题是该值无法更新。我认为我正确引用该值的语法是错误的。请帮我。预先感谢。

更新查询:

db.businesslistings.updateMany({}, 
  {$set: {"address": '$attributes[0].basicDetails[1].valueString'}})

结果:

地址:“$attributes[0].basicDetails[1].valueString”

mongodb mongoose mongo-shell mongodb-update
1个回答
1
投票

简单的更新查询无法做获取字段值等复杂查询。您需要使用聚合管道进行更新查询。

点符号(路径)不起作用,您需要如下查询:

从内到外

  1. 获取

    attributes
    数组的第一个元素。

  2. 获取

    basicDetails
    字段。

  3. 获取

    basicDetails
    数组的第二个元素。

  4. 获取

    valueString
    字段。

db.businesslistings.updateMany({},
[
  {
    $set: {
      "address": {
        $getField: {
          input: {
            $arrayElemAt: [
              {
                $getField: {
                  input: {
                    $arrayElemAt: [
                      "$attributes",
                      0
                    ]
                  },
                  field: "basicDetails"
                }
              },
              1
            ]
          },
          field: "valueString"
        }
      }
    }
  }
])

演示@Mongo Playground

© www.soinside.com 2019 - 2024. All rights reserved.