Node.js 使用mongoose更新mongodb中的文档应该使用哪种方法?

Node.js 使用mongoose更新mongodb中的文档应该使用哪种方法?,node.js,mongoose,Node.js,Mongoose,我有两种方法通过在post模式中插入用户对象来更新LIKES数组。两种方法都很好,但我想知道哪种方法更好,为什么。我也在我的应用程序中使用mongoose “我的帖子”架构中的密钥对: likes:[{ user:{ type: Schema.Types.ObjectId, refPath:'onModel' } }] 第一种方法是使用$push操作符 Post.update({ _id: req.params.postid,

我有两种方法通过在post模式中插入用户对象来更新LIKES数组。两种方法都很好,但我想知道哪种方法更好,为什么。我也在我的应用程序中使用mongoose

“我的帖子”架构中的密钥对:

likes:[{
    user:{
        type: Schema.Types.ObjectId,
        refPath:'onModel'
}        
}]
第一种方法是使用$push操作符

Post.update({
    _id: req.params.postid,
    'likes.user': {
        $ne:
            authorizedData.jwt_payload.patient._id
    }
},
    { $push: { likes: { user: authorizedData.jwt_payload.patient._id } } })
    .then(post => res.json(post))
    .catch(err => res.json(err))
第二种方法是使用mongoose保存方法

Post.findById(req.params.postid)
    .then(post => {
      if (
        post.likes.filter(like => like.user.toString() === authorizedData.jwt_payload.patient._id)
          .length > 0
      ) {
        return res
          .status(400)
          .json({ alreadyliked: 'User already liked this post' });
      }

      // Add user id to likes array
      post.likes.unshift({ user: authorizedData.jwt_payload.patient._id });

      post.save().then(post => res.json(post));
    })
    .catch(err => res.status(404).json({ postnotfound: 'No post found' }));

第一种方法是使用$push操作符,这更有效,因为您让数据库完成所有工作&您不必将Post加载到内存中