MongoDB批量更新问题:power<max_power时将power字段加1
问题分析与解决方法
你的代码未生效有两个核心问题:
- 把字段名
max_power写成了字符串常量'max_power',MongoDB会将其当作普通字符串与power数值对比,自然匹配不到任何文档 - MongoDB常规查询语法无法直接在条件里对比同文档的两个字段,必须用
$expr来使用聚合表达式实现字段间的比较
正确代码
await ids.updateMany( { $expr: { $lt: ['$power', '$max_power'] } }, { $inc: { power: 1 } } )
代码说明
$expr允许在查询条件中使用聚合表达式,这里用$lt聚合操作符对比当前文档的$power和$max_power字段(字段名前加$表示引用文档中的对应字段)- 筛选出符合条件的文档后,
$inc操作符会将这些文档的power字段值加1
内容的提问来源于stack exchange,提问作者hello
相关产品推荐
相关产品推荐

