MongoDB中$inc与$Push一同使用时不生效问题排查
解决MongoDB更新中$inc不生效的问题
嘿,我一眼就发现问题所在啦!你把$push和$inc拆成了两个独立的对象,分别作为update()方法的第二个和第三个参数,但MongoDB的update()方法规则是:所有更新操作符必须放在同一个对象里作为第二个参数,第三个参数是用来配置更新选项(比如upsert、multi这类)的,所以你的$inc被当成了无效的选项,自然不会执行数值递增操作。
正确的写法应该是这样:
db.contests.update( { _id: ObjectId("5ad7904d44e6c9330c3aeb6b") }, { $push: { players: { $each: [ { teamId: 340000474, TeamName: 'xx' } ] } }, $inc: { "joinedplayers": 1 } } )
简单解释下:
把$push和$inc都塞进第二个参数的同一个对象里,MongoDB就会同时执行这两个更新操作——既往players数组里添加新元素,又把joinedplayers字段的值加1。你再执行这个修正后的语句,就能看到joinedplayers正常递增啦!
内容的提问来源于stack exchange,提问作者Gaurav Kumar
相关产品推荐
相关产品推荐

