仅返回创建的子文件mongoose

时间:2018-04-20 16:58:33

标签: mongodb mongoose

我需要将一个新文档推入一个数组并使用他的_id。

现在我正在使用findOneAndUpdate,我知道我可以使用{new:true}但我只需要创建的文档而不是父文档。

到目前为止这是我的代码

User.findOneAndUpdate(
    {
        'posts._id': req.params.id
    },
    {
        $push: {
            'posts.$.comments': {
                from: {
                    _id: req.user._id,
                    username: req.user.username,
                },
                body: req.body.commentBody
            }
        }
    },
    err => {
        if (err) console.log(err)
        // Do something with ObjectId
    }
);

提前致谢。

1 个答案:

答案 0 :(得分:1)

findOneAndUpdate回调为您提供了更新的文档。

你有帖子_id。您可以使用它来查找要添加注释的帖子。在推送注释时,它将是post数组中的最后一个元素。

var mypost = doc.posts.find(function(post){
    return post._id.toString()==req.params.id
});

console.log(mypost.comments[mypost.comments.length]._id)