流星从集合中删除数组对象的值

时间:2019-02-28 11:52:11

标签: mongodb meteor

我正在尝试从集合中删除数组值。当任何用户添加注释,而其他用户答复以数组形式插入“注释”字段中时,数据将插入“注释”表中,而“答复”字段以数组形式出现在注释表中。如果我删除一个父注释,则在尝试从数组中删除任何已复制的注释时,它工作正常,那么它将不起作用。

这是我正在使用的条件。它将进入其他状态,但不会从数组字段中删除值。

deleteComment(comment) {

    let commentId = comment.commentId; //
    let replyComntID = comment.repID;
    if(replyComntID == 0)
    {   
      Comments.remove({_id: commentId});

    }else{

        Comments.remove({_id: comment.commentId, "replies._id":comment.replyComntID});


    } 

}

1 个答案:

答案 0 :(得分:0)

remove() method从您的收藏夹中删除整个文档

因此删除父注释是可行的,因为整个文档都已删除

但是要删除答复,您不想删除文档,而只是删除文档中数组中的一项-因此您需要update() method

具体来说,您需要使用$pull operator从数组中删除项目

所以您的答案看起来像这样(不知道您的架构是什么样的):

Comments.update({ _id: commentId }, { $pull: { replies: { _id: replyComntID } } })

有关{pull的工作原理,请参见mongo docs