MongoDB - Meteor:更新,添加和删除数组中的元素

时间:2016-07-31 04:29:39

标签: mongodb meteor

我试图在哈希中选择嵌套数组中的特定元素,就像这样。

post:{
      _id,
      comments:[{
          comment_id:post.comments.length + 1,
          comment: "hello world",
          user_id:Meteor.userId()}]
}

我的最终目标是能够通过comment_id添加/编辑/删除嵌套注释,但我在尝试首先选择我需要的元素时遇到了问题。

1 个答案:

答案 0 :(得分:0)

如果您的comments对象中只有post,那么您应该只有comments这样的数组:

Posts {
   _id: String;
   comments: [];
}

并通过他的ID删除评论:

Posts.update({_id: postId, "comments.comment_id" : "commentIdToDelete"}, 
{ $pull:{"comments": {"comment_id": "commentIdToDelete"}}})

通过他的ID更新评论:

Posts.update({_id: postId, "comments.comment_id" : "commentIdToUpdate"}, 
{ $set:{"comments.$.comment": "A new comment"}})

<强>更新

要在comments数组中添加评论,我们必须对post文档进行初始化(如果尚未完成):

  Posts.insert({
      comments: []
  });

现在我们必须检索comments的{​​{1}}数组大小才能更新:

post

最后我们可以在let lengthComments = Posts.findOne({_id: postIdToUpdate}).comments.length; 数组中添加注释:

comments