我正在尝试从集合中删除数组值。当任何用户添加注释,而其他用户答复以数组形式插入“注释”字段中时,数据将插入“注释”表中,而“答复”字段以数组形式出现在注释表中。如果我删除一个父注释,则在尝试从数组中删除任何已复制的注释时,它工作正常,那么它将不起作用。
这是我正在使用的条件。它将进入其他状态,但不会从数组字段中删除值。
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});
}
}
答案 0 :(得分:0)
remove()
method从您的收藏夹中删除整个文档
因此删除父注释是可行的,因为整个文档都已删除
但是要删除答复,您不想删除文档,而只是删除文档中数组中的一项-因此您需要update()
method
具体来说,您需要使用$pull
operator从数组中删除项目
所以您的答案看起来像这样(不知道您的架构是什么样的):
Comments.update({ _id: commentId }, { $pull: { replies: { _id: replyComntID } } })
有关{pull的工作原理,请参见mongo docs