更新猫鼬文档中另一个数组内数组中的字段
update a field in a array inside another array in mongoose document
process = {
num: 1,
notes: [
{ sequence: 1,
user: 199283,
votes: [
{_id: 113222, user: 122334, text: 'something' },
{_id: 441122, user: 123321, text: 'other something' },
]},
{ sequence: 2,
user: 199213,
votes: [
{_id: 111122, user: 121564, text: 'something2' },
{_id: 222221, user: 126621, text: 'other something2' },
{_id: 333333, user: 123321, text: 'other something2' }
]}
]
}
需要在子数组 votes 中将字段 text
更新为 _id
= 333333。
我尝试使用 Model.findAndUpdate()。但是,我在互联网示例中找到了使用 1 级数组进行更新的示例。
如何使用 mongoose 更新文档中另一个数组中数组中的字段?
找到文档后,您可以对对象进行任何更改,然后对文档调用 .save()
以在数据库中进行相同的更改。我使用了 forEach 回调,但您也可以使用像 lodash 这样的库来更改文本。
let document = await Model.find({_id:2134315})
document.notes.forEach((note)=>{
note.votes.forEach((vote)=>{
if(vote._id==333333) vote.text="YOUR NEW TEXT HERE"
})
})
document.save()
如果您使用的是填充引用,这可能不起作用,但从您的描述来看,它似乎不是这样。
process = {
num: 1,
notes: [
{ sequence: 1,
user: 199283,
votes: [
{_id: 113222, user: 122334, text: 'something' },
{_id: 441122, user: 123321, text: 'other something' },
]},
{ sequence: 2,
user: 199213,
votes: [
{_id: 111122, user: 121564, text: 'something2' },
{_id: 222221, user: 126621, text: 'other something2' },
{_id: 333333, user: 123321, text: 'other something2' }
]}
]
}
需要在子数组 votes 中将字段 text
更新为 _id
= 333333。
我尝试使用 Model.findAndUpdate()。但是,我在互联网示例中找到了使用 1 级数组进行更新的示例。
如何使用 mongoose 更新文档中另一个数组中数组中的字段?
找到文档后,您可以对对象进行任何更改,然后对文档调用 .save()
以在数据库中进行相同的更改。我使用了 forEach 回调,但您也可以使用像 lodash 这样的库来更改文本。
let document = await Model.find({_id:2134315})
document.notes.forEach((note)=>{
note.votes.forEach((vote)=>{
if(vote._id==333333) vote.text="YOUR NEW TEXT HERE"
})
})
document.save()
如果您使用的是填充引用,这可能不起作用,但从您的描述来看,它似乎不是这样。