You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MongoDB中用数组对象自身字段值更新其属性

MongoDB批量更新餐厅菜品附加项字段

要将每个餐厅文档items数组中每个对象的optionalAddons.addons属性值,替换为该对象自身的addableIngredients字段值,可以使用MongoDB的聚合管道式更新配合数组过滤器实现,具体命令如下:

db.restaurants.updateMany(
  {}, // 匹配所有餐厅文档,如需指定单个餐厅可改为 {name: "4Cheeze"}
  [
    {
      $set: {
        "items.$[item].optionalAddons.addons": "$items.$[item].addableIngredients"
      }
    }
  ],
  {
    arrayFilters: [{"item": {}}] // 匹配items数组中的每一个元素
  }
)

命令说明:

  • updateMany({}, ...):对所有餐厅文档执行更新操作,若只需更新特定餐厅,将第一个参数替换为对应的查询条件(如{name: "4Cheeze"})即可。
  • 聚合管道中的$set操作:通过items.$[item]引用数组中的每个元素,将optionalAddons.addons的值设为同个元素的addableIngredients内容。
  • arrayFilters:指定数组元素的匹配规则,{"item": {}}表示匹配items数组中的所有元素,确保每个菜品对象都被处理。

执行该命令后,示例文档中的每个菜品对象的optionalAddons.addons都会被更新为对应的addableIngredients值,比如"Chicken Grill"的addons会变成"cheese - 2, mayo - 0"。

内容的提问来源于stack exchange,提问作者Alamin Shaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 07:10:03