Questo capitolo introduce le operazioni batch (bulkWrite) sui dati dei documenti MongoDB utilizzando la shell di mongo. Qui, le operazioni batch non si riferiscono solo all'aggiornamento in blocco dei documenti menzionati nei capitoli precedenti, ma includono anche il supporto per eseguire una serie di operazioni di scrittura, inclusa l'inserzione, l'aggiornamento e la cancellazione dei documenti.
La funzione bulkWrite viene utilizzata per operazioni batch nella shell di mongo.
Suggerimento: le operazioni batch sono spesso utilizzate in scenari che richiedono la sincronizzazione batch dei dati.
Operazioni di scrittura supportate dalla funzione bulkWrite
Le operazioni batch supportano le seguenti combinazioni di operazioni di scrittura:
- insertOne - Inserisce un documento
- updateOne - Aggiorna un documento
- updateMany - Aggiorna una serie di documenti
- replaceOne - Sostituisce un documento
- deleteOne - Cancella un documento
- deleteMany - Cancella una serie di documenti
Formato della sintassi
db.collection.bulkWrite(
[ <operazione 1>, <operazione 2>, ... ],
)
Spiegazione:
- operazione - Rappresenta la configurazione dell'operazione di scrittura
- bulkWrite accetta un array di operazioni di scrittura.
Esempio
Ecco un esempio esaustivo che mostra l'esecuzione in blocco di una serie di operazioni di scrittura di documenti.
db.inventory.bulkWrite(
[
// Inserisce un documento
{ insertOne :
{
// Contenuto del documento
"documento" :
{
"_id" : 4, "char" : "Dithras", "class" : "barbarian", "lvl" : 4
}
}
},
{ insertOne :
{
"documento" :
{
"_id" : 5, "char" : "Taeln", "class" : "fighter", "lvl" : 3
}
}
},
// Aggiorna un documento, updateMany è simile per l'aggiornamento di una serie di documenti
{ updateOne :
{
// Condizione di aggiornamento
"filtro" : { "char" : "Eldon" },
// Contenuto dell'aggiornamento
"aggiornamento" : { $set : { "stato" : "Lesione critica" } }
}
},
// Cancella un documento, deleteMany è simile per la cancellazione di più documenti
{ deleteOne :
// Condizione di cancellazione
{ "filtro" : { "char" : "Brisbane" } }
},
// Sostituisce un documento
{ replaceOne :
{
// Condizione di sostituzione
"filtro" : { "char" : "Meldane" },
// Contenuto di sostituzione
"sostituzione" : { "char" : "Tanys", "class" : "oracolo", "lvl" : 4 }
}
}
]
);