如何在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
相关产品推荐
相关产品推荐

