代码之家  ›  专栏  ›  技术社区  ›  vibhor1997a

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

  •  1
  • vibhor1997a  · 技术社区  · 7 年前

    我有收藏下图:-

    {
       _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"
          }
        }
      }}
    ])
    

    它补充道 身份证件 所有子文档的字段。 我怎样才能加上 图像资源ID 值等于 场?

    MongoDB 所以请容忍我。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ashh    7 年前

    你得绕过去 images $map in 表达 $地图 聚合和最终使用 $out 聚合以将它们写入另一个集合。

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