Как обновить указанный массив массива c внутри другого массива в mon goose? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть такая схема:

const NoteClusterSchema = new Schema({
   noteInfo: [{
        title: String,
        Description: String,
        authors:[{
          name: String, Id: String
        }]
   }],
   idGroup: String //this is the group of the people that are working on the proyect
}, {timestamps:true});

Примером noteInfo будет

noteInfo: [{
  title: "Hello",
  Description: "Hello World",
  authors:[
     {name: "Marcelo", id: "1234123123"},
     {name: "Pancho", id: "12341345344"}
  ]
}]

Как я могу обновить, например, в массиве авторов специально имя "Марсело"? (предположим, что это так, если пользователь меняет свое имя. Я знаю, что в этом конкретном случае c я мог бы указать только _id, но в моей реальной схеме это не пользователь, который я хочу обновить)

Я думал о чем-то вроде этого:

await NoteClusterSchema.updateMany({idGroup: req.body.idGroup}, 
                {
                    noteInfo: {$push: {authors: {name: 
                    req.body.name}}}
             })

Но, таким образом, он не будет знать, какое обновление всех массивов noteInfo, или он создаст новый authors массив и изменение noteInfo: {$push: $push: {noteInfo: создаст только новый массив noteInfo.

Итак, как я могу обновить этот указанный c объект в массиве внутри другого массива с помощью метода UpdateMany?

...