如何使用多个条件更新mongodb的文档?

时间:2019-11-22 19:34:48

标签: javascript node.js mongodb express mongoose

我有一个发布架构,该架构仅具有_id,文本,喜欢和注释之类的属性。如果要满足两个条件,我想将用户ID推入likes数组。首先,帖子的ID应该与查询参数匹配,然后Likes数组不应该已经包含尝试喜欢该帖子的人的ID。相反,错误消息应该出现:发布已经喜欢的消息。

类似于发布架构中的密钥对

likes:[{
    user:{
        type: Schema.Types.ObjectId,
        refPath:'onModel'
    }        
}]

我写了以下查询,但它不起作用。更新部分工作正常,但第一个参数存在一些问题。

Post.update({$and: [{ _id: req.params.postid},{"likes": { $ne : { user: 
authorizedData.jwt_payload.patient._id  }}}]},
            { $push: { likes: {user: authorizedData.jwt_payload.patient._id }}})
            .then(post => res.json(post))
            .catch(err => res.json(err))

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

好的,这样很简单:

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))