Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

410
Vistas
¿Cómo actualizar múltiples documentos con múltiples condiciones en MongoDB?

Tengo colecciones de MongoDB con varios documentos. Ahora tengo los ID de documentos de entrada en una serie de autos que quiero actualizar. Algo como esto.

 req.body = { cars: [ '584cf6c126df866138a29408', '5852819e9693c27c136104bd' ], name: 'Home' }, { cars: [ '584d638242795854a091cbbf', '5842e09e372b786355ba50e7' ], name: 'Office' } ]

Operación esperada

 db.cars.update({_id : req.body[i].cars}, {name : req.body[i].name}, {new : true});

Resultado Esperado
Los cuatro documentos con ID se actualizan con su campo de nombre en el documento.

Ahora, una forma de actualizar los autos es tener un async.each aplicado en la matriz y un aysnc.each en estos dos documentos. Esa es la forma más larga de hacerlo. Esperaba que si tuviera un async.each para estas dos matrices y de alguna manera pudiera comprimir ambos documentos en una sola consulta, haría que el código se viera más elegante. Ya he revisado varias páginas y todavía no he encontrado nada. Quería saber si esto es posible en mongo o no.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Al principio, es posible que deba convertir el tipo de String de identificación de su automóvil a mongodb ObjectId , lo que significa:

 cars: [ ObjectId'584cf6c126df866138a29408'), ObjectId'5852819e9693c27c136104bd') ]

luego use el operador $in para hacer coincidir con los documentos.

puede probar esto.

 var ObjectId = require('mongodb').ObjectID; var cars = req.body[i].cars.map(function (id) { return new ObjectId(id); }) db.cars.update({_id : {$in: cars}}, {$set : {name : req.body[i].name}}, {multi : true}, function(err, docs) { console.log(docs); });
over 4 years ago · Santiago Trujillo Denunciar

0

Intente usar $in de mongodb en la consulta de búsqueda mientras realiza la actualización. Ver consulta a continuación:

 Model.update({_id : {$in: req.body[i].cars}}, {$set : {name : req.body[i].name}}, {multi : true});

Entonces, de esta manera, debe ejecutar 2 consultas para actualizar los nombres.

Ver $in-doc para saber más sobre los usos.

Espero que esto te ayudará.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda