Come aggiornare più documenti con un solo comando in MongoDB?

Lanciando questo comando di update in MongoDB il risultato è che aggiorna un solo documento

> db.test.save({"_id":1, "foo":"bar"});
> db.test.save({"_id":2, "foo":"bar"});

> db.test.update({"foo":"bar"}, {"$set":{"test":"success!"}});

> db.test.find({"test":"success!"}).count();
1

Come faccio a cilclare l'istruzione update per aggiornare tutti i documenti? O meglio, esiste un comando, una istruzione che in MongoDB consenta di aggiornare tutti i documenti in una sola volta?

In Corso 4
MongoDB 06-06-2018 2 Risposte 787 Visite 0

Risposte ( 2 approvate )

  1. Luciano Gerdone
    +1
    06-06-2018 12:27:31
    Rispondi

    A partire dalla versione 2.2 e successive di MongoDB per effettuare degli update multipli con una sola istruzione devi usare il paramentro 'multi' e settarlo a true, in questo modo:

    db.Collection.update({query}, 
                     {$set: {field1: "f1", field2: "f2"}},
                     {multi: true })
  2. Bruno Verzinesi
    0
    06-06-2018 12:32:22
    Rispondi

    Nelle versioni più rencenti esiste il comando updateMany, dalla shell (client) di MongoDB scrivi

    db.Collection.updateMany({}, $set: {field1: 'field1', field2: 'field2'})

    come vedi in questo caso non c'è bisogno di passare il parametro 'multi', così l'istruzione di update multiplo dei documenti risulta ancora più pulita e leggibile.  

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

Antonino Zuopolo

Antonino Zuopolo

Autore di questa domanda

 Domanda Precedente

 Elenco Domande 

Domanda Successiva