不知道如何在MongoDB中保存
我正在努力推动MongoDB的子集合,但我不知道如何进行 因此,我的帖子收集结构:不知道如何在MongoDB中保存,mongodb,mongoose,Mongodb,Mongoose,我正在努力推动MongoDB的子集合,但我不知道如何进行 因此,我的帖子收集结构: { "_id": "58a3189b67476b420e465f8b", "postID": "123456", "comments": [ { "subComments": [], "comment": "This is a test", "commentID": 1 } ]
{
"_id": "58a3189b67476b420e465f8b",
"postID": "123456",
"comments": [
{
"subComments": [],
"comment": "This is a test",
"commentID": 1
}
]
}
因此,我要做的是使用findOneAndUpdate查找上面的文档,然后选择这个特定的注释commentID==1,然后推入它的子元素
我可以看到你如何通过postID找到DONEANDUPDATE并通过推入Mongoose添加评论,但是我如何通过它的commentID找到post,然后推入它的子命令找到评论
提前谢谢各位!非常专注于这最后一块拼图。它与其他查找查询类似
您可以尝试以下方法:
Post.findOneAndUpdate({
"postID" : givenPostID,
"comments.commentID" : givenCommentID
},{
$push : {
"comment.$.subComments" : givenSubComment
}
},function(err,result){...});
comments.commentID:givenCommentID将找到commentID==givenCommentID的comment元素
comment.$.subcomment将givenSubComment推送到comments数组的subComments数组,该数组是基于commentID匹配的comments数组的匹配元素
欲了解更多信息,请阅读。如果这种方法奏效,生活将是美好的。但是,下面的一行似乎不起作用:{$push:{comments.$.subComments:req.body.comment}}-我似乎也找不到关于这种推送类型的任何文档,因为我的问题似乎是语法错误。我的编辑已经在警告我了。有什么想法吗,伙计?谢谢他的同事,让我用链接更新答案。另外,我对答案做了一些修改,请尝试一下,我相信它会有用的。原来我在更新查询中漏掉了。它不起作用。我收到以下错误:{[MongoError:'$push'为空。您必须指定如下字段:{$push:{:…}]name:'MongoError',消息:'\'$push\'为空。您必须指定如下字段:{$push:{:…}',ok:0,errmsg:'\'$push\'为空。您必须指定如下字段:{$push:{:{:…}',代码:9}有什么想法吗?这里非常迷茫……另外,我必须说明我使用的是猫鼬。可能语法不同。我会试试看是否能把它挖出来。我只给出了猫鼬的语法,我已经多次尝试过这个查询。你只要试着看看它是否有效。我确信它会起作用