MongoDB将新字段添加到数组的每个元素

时间:2020-09-22 09:38:33

标签: mongodb mongo-shell

我有一个mongo集合myCollection,其结构如下:

{ "_id" : ObjectId("xxxxxxx"),
  "name" : "name1",
  "address" : "address1",
  "list" : [
      { "field1" : true,
        "field2" : false
      },
      { "field1" : true,
        "field2" : false
      }]
},
...
,
{ "_id" : ObjectId("zzzzzzzzz"),
  "name" : "name100",
  "address" : "address100",
  "list" : [
      { "field1" : true,
        "field2" : false
      },
      { "field1" : true,
        "field2" : true
      }]
}

对于集合的每个文档,我想为数组field3的每个子元素创建一个默认值为false的新字段(list)。

预期输出:

{ "_id" : ObjectId("xxxxxxx"),
  "name" : "name1",
  "address" : "address1",
  "list" : [
      { "field1" : true,
        "field2" : false,
        "field3" : false
      },
      { "field1" : true,
        "field2" : false,
        "field3" : false
      }]
},
...
,
{ "_id" : ObjectId("zzzzzzzzz"),
  "name" : "name100",
  "address" : "address100",
  "list" : [
      { "field1" : true,
        "field2" : false,
        "field3" : false
      },
      { "field1" : true,
        "field2" : true,
        "field3" : false
      }]
}

1 个答案:

答案 0 :(得分:0)

您可以使用$addFields添加更多字段

db.collection.aggregate([
  {
    $addFields: {
      "list.fields3": false
    }
  }
])

工作Mongo Playground