如何使用 mongoose 更新 MongoDb 中嵌入的 arrays/objects?
How to update embedded arrays/objects in MongoDb with mongoose?
我的 MongoDB 文档如下所示:
{_id: ObjectId("xxx"),
username: 'user',
active_courses: [
{'name': 'MongoDB',
'notes': [
{'title': 'Note title',
'note': 'Actual note content'}
]}
]
现在我需要用标题 'Note title' 更新笔记 Object。我该怎么做?
我已经尝试了以下但它不起作用。
Student.findOneAndUpdate(
{username:req.body.username},
{$set: {'active_courses.$[course].notes.$[note]': req.body}},
{arrayFilters: [{'course.name': req.body.course},{'note.title': req.body.title} ]})
.then(result => {
res.status(200).json({message: 'Note saved!'})
})
顺便说一句,我不知道数组的索引,所以我不能使用 active_courses[0].notes...
感谢对此问题的任何帮助。谢谢!
您可以将嵌入式文档定义为模式,这样 mongoose 会自动为它们生成一个 objectid。使用该 ID,您可以通过其父文档访问并修改子文档,如下所示:
var doc = parent.children.id(_id);
我的 MongoDB 文档如下所示:
{_id: ObjectId("xxx"),
username: 'user',
active_courses: [
{'name': 'MongoDB',
'notes': [
{'title': 'Note title',
'note': 'Actual note content'}
]}
]
现在我需要用标题 'Note title' 更新笔记 Object。我该怎么做?
我已经尝试了以下但它不起作用。
Student.findOneAndUpdate(
{username:req.body.username},
{$set: {'active_courses.$[course].notes.$[note]': req.body}},
{arrayFilters: [{'course.name': req.body.course},{'note.title': req.body.title} ]})
.then(result => {
res.status(200).json({message: 'Note saved!'})
})
顺便说一句,我不知道数组的索引,所以我不能使用 active_courses[0].notes...
感谢对此问题的任何帮助。谢谢!
您可以将嵌入式文档定义为模式,这样 mongoose 会自动为它们生成一个 objectid。使用该 ID,您可以通过其父文档访问并修改子文档,如下所示:
var doc = parent.children.id(_id);