Node.js: aggiornamento di documenti embedded con Mongoose

Node.js: aggiornamento di documenti embedded con Mongoose

In Node.js possiamo aggiornare gli oggetti embedded contenuti in un array di un documento di MongoDB.

Un documento in MongoDB può a sua volta contenere uno o più array di documenti annidati (embedded). Per aggiornare una proprietà di uno di questi documenti annidati occorre innanzitutto selezionare il documento genitore e quindi accedere alla proprietà del sottodocumento utilizzando l'operatore $.

Dato il seguente documento della collezione products:


{
    id: 10,
    price: 50.20,
    attributes: [
       {
          name: 'foo',
          id: 2
       },
       {
          name: 'test',
          id: 3
       }
    ]
}

Possiamo implementare la seguente soluzione:


products.findOneAndUpdate({id: 10, 'attributes.name': 'test'}, {$set: {'attributes.$.id': 5}}, (err, doc) => {
    //...
});

Torna su