不知道如何在MongoDB中保存

不知道如何在MongoDB中保存,mongodb,mongoose,Mongodb,Mongoose,我正在努力推动MongoDB的子集合,但我不知道如何进行 因此,我的帖子收集结构: { "_id": "58a3189b67476b420e465f8b", "postID": "123456", "comments": [ { "subComments": [], "comment": "This is a test", "commentID": 1 } ]

我正在努力推动MongoDB的子集合,但我不知道如何进行

因此,我的帖子收集结构:

{
    "_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}有什么想法吗?这里非常迷茫……另外,我必须说明我使用的是猫鼬。可能语法不同。我会试试看是否能把它挖出来。我只给出了猫鼬的语法,我已经多次尝试过这个查询。你只要试着看看它是否有效。我确信它会起作用