Tip
MongoDB también provee la db.collection.bulkWrite() método para realizar operaciones de escritura masiva.
Descripción
Bulk.insert(<document>)Agrega una operación de inserción a una lista de operaciones masivas.
Bulk.insert()acepta el siguiente parámetro:ParameterTipoDescripcióndocDocumento
Documento a insertar. El tamaño del documento debe ser menor o igual que el tamaño máximo del documento BSON.
Compatibilidad
Este comando está disponible en implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
Nota
Este comando es compatible con todos los clústeres de MongoDB Atlas. Para obtener información sobre el soporte de Atlas para todos los comandos, consulte Comandos no compatibles.
Comportamiento
Inexactitud en la inserción
Incluso si encuentra un error del servidor durante una inserción, es posible que se hayan insertado algunos documentos.
Después de una inserción exitosa, el sistema devuelve BulkWriteResult.nInserted, que representa la cantidad de documentos insertados en la colección. Si la operación de inserción se interrumpe debido a un cambio de estado del set de réplicas, el sistema podría seguir insertando documentos. Como resultado, BulkWriteResult.nInserted puede reportar menos documentos de los realmente insertados.
Consideraciones sobre el rendimiento para datos aleatorios
Si una Operación inserta una gran cantidad de datos aleatorios (por ejemplo, índices encriptados) en un campo indexado, el rendimiento de las inserciones puede disminuir. Las inserciones masivas de datos aleatorios generan entradas de índice aleatorias, lo que incrementa el tamaño del índice. Si el índice alcanza un tamaño que requiere que cada inserción aleatoria acceda a una entrada de índice diferente, las inserciones resultan en una alta tasa de desalojo y reemplazo de la caché de WiredTiger. Cuando esto ocurre, el índice deja de estar completamente en caché y se actualiza en el disco, lo que reduce el rendimiento.
Para mejorar el rendimiento de las inserciones masivas de datos aleatorios en campos de índice, puedes:
Descartar el índice y luego volver a crearlo después de insertar los datos aleatorios.
Inserta los datos en una colección vacía sin índice.
Crear el índice después de la inserción masiva ordena los datos en memoria y realiza una inserción ordenada en todos los índices.
Ejemplo
Lo siguiente inicializa un Bulk() generador de operaciones para la colección items y añade una serie de operaciones de inserción para agregar varios documentos:
var bulk = db.items.initializeUnorderedBulkOp(); bulk.insert( { item: "abc123", defaultQty: 100, status: "A", points: 100 } ); bulk.insert( { item: "ijk123", defaultQty: 200, status: "A", points: 200 } ); bulk.insert( { item: "mop123", defaultQty: 0, status: "P", points: 0 } ); bulk.execute();