如何在 mongodb mongoose 中增加字段

How to increment filed in mongodb mongoose

 const options = {
    $addToSet: { whoLikes: userId },
    $inc: { likesCount: 1 },
    new: true,
  };

collection.findByIdAndUpdate({ _id: postId }, options)

我想要的是仅当 whoLikes 数组长度递增时才递增 likesCount。 现在 likesCount 一直递增与 whoLikes 数组中有多少对象无关。

我正在使用猫鼬,node.js

  • 使用findOneAndUpdate()方法
  • 只需检查查询部分中的条件 whoLikes: { $ne: userId } userId 不应在 whoLikes 数组中
  • 用户 $push 而不是 $addToSet
  • 其他选项应该在第三个参数中new:true
const options = {
    $push: { whoLikes: userId },
    $inc: { likesCount: 1 }
};

collection.findOneAndUpdate(
  { 
    _id: postId,
    whoLikes: { $ne: userId }
  }, 
  options,
  { new: true }
)

Ex1: 添加不存在的 UserID

Playground

Ex2: 添加已经存在的 UserID

Playground