我在mongodb中有一个文档,其中total_units需要更新为子文档中存在的单位总和

9ceoxa92  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(93)
{
    product: "mobile",
    total_units: 10,
    list: [
      {
        "brand": "samsung",
        "units": 5
      },
      {
        "brand": "apple",
        "units": 5
      }
    ]
  }

我需要根据子文档数组中的units更新total_units
我知道如何更新获取total_sum,但不知道如何更新文档中的total_sum

db.example3.aggregate({$project: { "result":{$sum: "$list.units"}}})

但如何在文档中更新

db.example3.update({},{"$set":{"total_units":{"$sum":"$list.units"}}})

例外结果应为,如果品牌Apple的单位为7,品牌Samsung的值为5,则总单位部分应为total_units:12

luaexgnf

luaexgnf1#

Demo@mongoplayground.net
将聚合管道添加到查询中。在您的示例中,您缺少方括号https://mongoplayground.net/p/TgjZUC-jlG _

db.collection.update({},
[
  {
    "$set": {
      "SizeOfList": {
        $size: "$list"
      },
      "total_units": {
        $sum: "$list.units"
      }
    }
  }
])

output

//outputs
[
  {
    "SizeOfList": 2,
    "_id": ObjectId("5a934e000102030405000000"),
    "list": [
      {
        "brand": "samsung",
        "units": 5
      },
      {
        "brand": "apple",
        "units": 5
      }
    ],
    "product": "mobile",
    "total_units": 10
  }
]

相关问题