首页 > 解决方案 > mongoDB条件增量

问题描述

db.posts.update({_id: post._id},
{
 $inc: {likes: 1},
 $addToSet:{likedby: johnny._id}
})

所以 $addToSet 只会在数组中不存在 id 的情况下将 id 添加到数组中,但是无论哪种方式,我的喜欢都会增加。

有什么办法可以使这个增量有条件吗?

标签: mongodb

解决方案


询问

  • 根据 id 搜索,如果不存在
  • 如果找到意味着不存在所以更新,不需要$addToSet
  • 将 1 替换为post._id,将“c”替换为johnny._id

测试代码在这里

db.collection.update({
  "_id": 1,
  "likedby": {
    "$ne": "c"
  }
},
{
  "$inc": {
    "likes": 1
  },
  "$push": {
    "likedby": "c"
  }
})

推荐阅读