Tip
MongoDB también proporciona la db.collection.bulkWrite() Método para realizar operaciones de escritura masiva.
Descripción
Bulk.find.hint()Establece la
hintopción que especifica el índice que debe admitirBulk.find()para:La opción puede tomar un documento de especificación de índice o la string de nombre de índice.
Si especifica un índice que no existe, la operación genera un error.
Bulk.find.hint()no tiene ningún efecto sobreBulk.find.removeOne()
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.
Ejemplo
Crear una colección de ejemplo orders:
db.orders.insertMany( [ { "_id" : 1, "item" : "abc", "price" : Decimal128("12"), "quantity" : 2, "type": "apparel" }, { "_id" : 2, "item" : "jkl", "price" : Decimal128("20"), "quantity" : 1, "type": "electronics" }, { "_id" : 3, "item" : "abc", "price" : Decimal128("10"), "quantity" : 5, "type": "apparel" }, { "_id" : 4, "item" : "abc", "price" : Decimal128("8"), "quantity" : 10, "type": "apparel" }, { "_id" : 5, "item" : "jkl", "price" : Decimal128("15"), "quantity" : 15, "type": "electronics" } ] )
Cree los siguientes índices en la colección de ejemplo:
db.orders.createIndex( { item: 1 } ); db.orders.createIndex( { item: 1, quantity: 1 } ); db.orders.createIndex( { item: 1, price: 1 } );
Las siguientes operaciones masivas especifican diferentes índices para usar en las distintas operaciones de actualización/reemplazo de documentos:
var bulk = db.orders.initializeUnorderedBulkOp(); bulk.find({ item: "abc", price: { $gte: Decimal128("10") }, quantity: { $lte: 10 } }).hint({item: 1, quantity: 1}).replaceOne( { item: "abc123", status: "P", points: 100 } ); bulk.find({ item: "abc", price: { $gte: Decimal128("10") }, quantity: { $lte: 10 } }).hint({item: 1, price: 1}).updateOne( { $inc: { points: 10 } } ); bulk.execute();
Para ver los índices utilizados, puede usar el pipeline $indexStats:
db.orders.aggregate( [ { $indexStats: { } }, { $sort: { name: 1 } } ] )