Vimos en el concepto anterior que MongoDB nos provee de un método que nos permite modificar un único documento llamado updateOne.
El segundo método que nos permite actualizar documentos pero en forma masiva es el método updateMany.
Veamos con un ejemplo algunas variantes del método updateMany:
use base1 db.libros.drop() db.libros.insertOne( { _id: 1, titulo: 'El aleph', autor: 'Borges', editorial: ['Siglo XXI','Planeta'], precio: 20, cantidad: 50 } ) db.libros.insertOne( { _id: 2, titulo: 'Martin Fierro', autor: 'Jose Hernandez', editorial: ['Siglo XXI'], precio: 50, cantidad: 12 } ) db.libros.insertOne( { _id: 3, titulo: 'Aprenda PHP', autor: 'Mario Molina', editorial: ['Siglo XXI','Planeta'], precio: 50, cantidad: 20 } ) db.libros.insertOne( { _id: 4, titulo: 'Java en 10 minutos', editorial: ['Siglo XXI'], precio: 45, cantidad: 1 } ) db.libros.find() db.libros.updateMany({_id : {$gt:2}} , {$set : {cantidad:0} }) db.libros.find() db.libros.updateMany({cantidad : {$eq:0}} , {$set : {faltantes:true} }) db.libros.find() db.libros.updateMany({cantidad : {$eq:0}} , {$unset : {faltantes:true}, $set:{cantidad: 100}} ) db.libros.find()
La primer modificación masiva la hacemos con todos los libros cuyo _id sean mayores a 2, fijando el campo cantidad con 0:
La segunda modificación masiva la hacemos con todos los libros que almacenan en el campo 'cantidad' el valor cero, agregando el campo 'faltantes' con el valor true:
La tercer y última modificación masiva la hacemos con todos los libros que almacenan en el campo 'cantidad' el valor cero, eliminamos el campo faltantes y fijamos el campo cantidad con el valor 100:
Crear la colección 'articulos' en la base de datos 'base1' (eliminar la colección previamente), cargar luego 6 documentos:
use base1 db.articulos.drop() db.articulos.insertOne( { _id: 1, nombre: 'MULTIFUNCION HP DESKJET 2675', rubro: 'impresora', precio: 3000, stock: 20 } ) db.articulos.insertOne( { _id: 2, nombre: 'MULTIFUNCION EPSON EXPRESSION XP241', rubro: 'impresora', precio: 3700, stock: 5 } ) db.articulos.insertOne( { _id: 3, nombre: 'LED 19 PHILIPS', rubro: 'monitor', precio: 4500, stock: 2 } ) db.articulos.insertOne( { _id: 4, nombre: 'LED 22 PHILIPS', rubro: 'monitor', precio: 5700, stock: 4 } ) db.articulos.insertOne( { _id: 5, nombre: 'LED 27 PHILIPS', rubro: 'monitor', precio: 12000, stock: 1 } ) db.articulos.insertOne( { _id: 6, nombre: 'LOGITECH M90', rubro: 'mouse', precio: 300, stock: 4 } )
Imprimir todos los documentos de la colección 'articulos'.
Fijar el stock en cero para todos los artículos del rubro monitor.
Agregar un campo llamado 'pedir' con el valor true para todos los artículos que tienen el campo stock en 0.
Eliminar el campo 'pedir' de todos los documentos
db.articulos.drop() db.articulos.insertOne( { _id: 1, nombre: 'MULTIFUNCION HP DESKJET 2675', rubro: 'impresora', precio: 3000, stock: 20 } ) db.articulos.insertOne( { _id: 2, nombre: 'MULTIFUNCION EPSON EXPRESSION XP241', rubro: 'impresora', precio: 3700, stock: 5 } ) db.articulos.insertOne( { _id: 3, nombre: 'LED 19 PHILIPS', rubro: 'monitor', precio: 4500, stock: 2 } ) db.articulos.insertOne( { _id: 4, nombre: 'LED 22 PHILIPS', rubro: 'monitor', precio: 5700, stock: 4 } ) db.articulos.insertOne( { _id: 5, nombre: 'LED 27 PHILIPS', rubro: 'monitor', precio: 12000, stock: 1 } ) db.articulos.insertOne( { _id: 6, nombre: 'LOGITECH M90', rubro: 'mouse', precio: 300, stock: 4 } ) db.articulos.find() db.articulos.updateMany({ rubro: {$eq:'monitor'}} , {$set: {stock:0}} ) db.articulos.find() db.articulos.updateMany({ stock: {$eq:0}} , {$set: {pedir:true}} ) db.articulos.find() db.articulos.updateMany({} , {$unset: {pedir:''}} ) db.articulos.find()