猫鼬 - 如何从$ pull中删除元素

时间:2017-03-06 08:55:47

标签: mongoose

我有架构mongoose

var postSchema = new Schema({
    comments: [{
        nickName: {type: String, required: true}, 
        comment: {type: String, required: true}
    }]
});

然后我想提出一条评论意见

Post.findOneAndUpdate({'_id': req.body._id}, {$pull: {'comments': {'_id': req.body._idComment} }},
  function(err, data) {
    if (err) {
        res.send({status:400});
    } else {
        // how get $pull object if I don't know index of element of array
        // data returns all objects
    }
});

1 个答案:

答案 0 :(得分:0)

没有直接的方法可以做到这一点。但是它的解决方法很少。 更新数据(我的意思是删除它),如果它成功,那么你知道你删除元素的输入就是你的答案。

Post.update({'_id': req.body._id}, 
   {$pull: {'comments': {'_id': req.body._idComment} }},function(err, data) {
      ....
      ....
});

您还可以运行find查询来检查您的数据是否已删除,这也会确认您删除的数据。

否则findOneAndUpdate会使用{new:True}选项返回更新后的文档,您可以将输入与返回的文档进行比较,以获取已删除的数据。