如何在mongodb中的所有文档中的子文档数组中添加字段?

时间:2018-09-01 11:09:26

标签: mongodb aggregation-framework

我有如下收藏:-

{
   _id: 123,
   images: [{
     _id: ObjectId("213"),
     id: "1"
   }]
}

我想添加一个依赖于imageResourceID字段的字段id

{
   _id: 123,
   images: [{
     _id: ObjectId("213"),
     id: "1",
     imageResourceID: "1"
   }]
}

我尝试了什么?

db.collection.aggregate([
  { "$addFields": {
    "images.imageResourceID": {
        "$map": {
        "input": "$otherImages",
        "as": "image",
        "in": "$$image.id"
      }
    }
  }}
])

它将imageResourceID字段添加为包含所有子文档的id字段的数组。 如何添加值等于imageResourceID的{​​{1}}字段?

先谢谢了。我是id的新手,请多多包涵。

1 个答案:

答案 0 :(得分:1)

您需要使用$map遍历images字段,并需要指定$map聚合的in表达式内的每个字段,最后使用{{3} }聚合以将它们写入另一个集合。

db.collection.aggregate([
  { "$addFields": {
    "images": {
      "$map": {
        "input": "$images",
        "as": "image",
        "in": {
          "_id": "$$image._id"
          "id": "$$image.id",
          "imageResourceID": "$$image.id"
        }
      }
    }
  }},
  { "$out": "<output-collection>" }
])