【发布时间】:2018-10-01 10:59:18
【问题描述】:
我需要将一个新文档推入一个数组并使用他的_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
}
);
提前致谢。
【问题讨论】:
-
您需要重新表述您的问题。这里有什么问题? “我只需要创建的文档而不需要父文档”是什么意思? “使用他的_id”是什么意思?您是否只想在此文档中存储
_id? -
我有一个 cmets 数组,上面的代码创建了一个评论文档并将其插入到 cmets 数组中,现在我需要获取我刚刚创建的新评论文档的新 _id,我希望我解释得对
-
我认为回调返回新文档。你只需要使用
doc.comments[doc.comments.length]._id -
^ 但这仅适用于您具有嵌套模式并且不只是将子文档存储为 JSON 对象的情况。您应该将评论的模型放在帖子的架构中。
-
posts 也是一个数组,所以我们需要知道帖子的索引是什么,文档就像这个 doc.posts[postIndex].cmets[commentIndex] 这就是为什么我只想获取创建的文档而不是整个文档