我有一个带有嵌套文档的 shema:
var BlogSchema = new mongoose.Schema({
...
comments : [Comments],
...
});
并尝试更新评论
router.post('/comments/:id', function (req, res, next) {
Blog.findOneAndUpdate(
{ 'comments._id': req.params.id },
{ "$set": {"comments.$": req.body}},
function (err, post) {
if (err) {
return next(err);
}
res.json(post);
});
});
带有请求正文
{"text": "测试评论 2"}
在请求启动时,它会返回一个带有未更改评论的博客文章。启动 GET 请求我收到更新的博客文章,并更新了正确的评论,但是:它丢失了所有字段,除了包含新内容的文本。甚至_id也被删除。
我可以将 findAndUpdate 函数与此类“部分”输入对象一起使用,只修改那里提到的字段,但保持其他字段不变吗?
以及如何在没有额外的类似查找请求的情况下从函数返回已修改的对象?