我试图在哈希中选择嵌套数组中的特定元素,就像这样。
post:{
_id,
comments:[{
comment_id:post.comments.length + 1,
comment: "hello world",
user_id:Meteor.userId()}]
}
我的最终目标是能够通过comment_id添加/编辑/删除嵌套注释,但我在尝试首先选择我需要的元素时遇到了问题。
答案 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