Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

414
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda