MongoDB中如何递增对象内的属性值?
Mongoose 对象属性值递增解决方案
错误原因分析
- 前两种写法直接将整个
items对象传入$inc,但$inc要求传入具体的字段路径而非对象,因此触发类型错误。 - 第三种写法尝试用模板字符串生成字段路径,但在对象字面量中直接使用模板字符串作为键名会触发语法错误,需使用计算属性名(方括号包裹)来动态生成键。
正确实现代码
let newItem = "1234"; let userProfile = await User.findOneAndUpdate( { userId: userID }, { $inc: { [`items.${newItem}`]: 1 } }, { new: true } // 可选:返回更新后的文档,默认返回更新前的文档 );
补充说明
{new: true}为可选参数,若需要获取更新后的用户数据,建议添加该参数;默认情况下,findOneAndUpdate返回更新前的文档。- 你的Schema中
items定义为Object类型完全符合需求,也可替换为Map类型,实现效果一致。
内容的提问来源于stack exchange,提问作者eX C0n
相关产品推荐
相关产品推荐

