更新猫鼬文档中另一个数组内数组中的字段

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()

如果您使用的是填充引用,这可能不起作用,但从您的描述来看,它似乎不是这样。