En MongoDB el db.collection.bulkWrite()
El método realiza múltiples operaciones de escritura con controles para el orden de ejecución.
Las operaciones de escritura masiva afectan a una sola colección. La collection
part es el nombre de la colección con la que realizar las operaciones.
Operaciones de escritura masiva
db.collection.bulkWrite()
El método se puede utilizar para realizar las siguientes operaciones de escritura:
insertOne
updateOne
updateMany
replaceOne
deleteOne
deleteMany
Cualquiera de estos métodos se puede incluir dentro de una llamada a db.collection.bulkWrite()
, y puede incluir diferentes métodos en la misma llamada.
Ejemplo
Aquí hay un ejemplo del uso de db.collection.bulkWrite()
para realizar una operación de escritura masiva en una colección llamada pets
:
Supongamos que insertamos los siguientes documentos en una colección llamada pets
:
db.pets.insertMany([
{ _id: 1, name: "Wag", type: "Dog", weight: 20 },
{ _id: 2, name: "Bark", type: "Dog", weight: 10 },
{ _id: 3, name: "Meow", type: "Cat" },
{ _id: 4, name: "Scratch", type: "Cat" },
{ _id: 5, name: "Bruce", type: "Bat" }
])
Ahora podemos usar db.collection.bulkWrite()
para realizar una operación de escritura masiva en esa colección.
Ejemplo:
db.pets.bulkWrite([
{ insertOne: { "document": { "_id": 6, "name": "Bubbles", "type": "Fish" }}},
{ updateOne : {
"filter" : { "_id" : 2 },
"update" : { $set : { "weight" : 15 } }
} },
{ deleteOne : { "filter" : { "_id" : 5 } } },
{ replaceOne : {
"filter" : { "_id" : 4 },
"replacement" : { "name" : "Bite", "type" : "Dog", "weight": 5 }
} }
])
Resultado:
{ "acknowledged" : true, "deletedCount" : 1, "insertedCount" : 1, "matchedCount" : 2, "upsertedCount" : 0, "insertedIds" : { "0" : 6 }, "upsertedIds" : { } }
En este caso, insertamos un documento, actualizamos otro documento, eliminamos otro y reemplazamos otro documento.
db.collection.bulkWrite()
método devuelve lo siguiente:
- Un
acknowledged
comotrue
si la operación se ejecutó con problemas de escritura ofalse
si el problema de escritura estaba deshabilitado. - Un recuento por cada operación de escritura.
- Una matriz que contiene un
_id
para cada documento insertado o alterado con éxito.
Ver el resultado
Ahora echemos un vistazo a los documentos de la colección nuevamente.
db.pets.find()
Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 15 } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 4, "name" : "Bite", "type" : "Dog", "weight" : 5 } { "_id" : 6, "name" : "Bubbles", "type" : "Fish" }
Podemos ver que todos los cambios se realizaron según lo especificado.
El ordered
Parámetro
Las operaciones de escritura masiva se pueden ordenar o desordenar. Por defecto, están ordenados.
Puede especificar el orden utilizando el parámetro booleano ordenado. Proporcionar un valor de true
lo convierte en una lista ordenada de operaciones, estableciéndolo en false
lo convierte en una lista desordenada de operaciones.
Con una lista ordenada de operaciones, MongoDB ejecuta las operaciones en serie. Si ocurre un error durante el procesamiento de una de las operaciones de escritura, MongoDB regresará sin procesar ninguna operación de escritura restante en la lista.
Con una lista desordenada de operaciones, MongoDB puede ejecutar las operaciones en paralelo (aunque esto no está garantizado). Si ocurre un error durante el procesamiento de una de las operaciones de escritura, MongoDB continuará procesando las operaciones de escritura restantes en la lista.
Más información
db.collection.bulkWrite()
El método también acepta un writeConcern
argumento, que describe el nivel de reconocimiento solicitado de MongoDB para operaciones de escritura.
Consulte la documentación de MongoDB para db.collection.bulkWrite()
para más información.