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

524
Vistas
¿La mejor manera de usar Mongoose para actualizar una matriz de objetos?

mi req.body es este, proviene de mi interfaz, por lo que son un par de objetos en una matriz, me gustaría actualizar en función de los registros que coinciden, pero la página ha cambiado.

 [ [0] { [0] _id: '60393a58c772c12724aa636e', [0] title: 'newTitle2', [0] page: '8', [0] book: '010', [0] __v: 0 [0] }, [0] { [0] _id: '60394e08f6e0ad0bb077e0bc', [0] title: 'newTitle3', [0] page: '123', [0] book: '099', [0] __v: 0 [0] } [0] ]

mi ruta es esta

 router.post("/dataSend", async(req, res) => { let { title, page, book} = req.body; console.log(req.body) const filter = { title }; const update = { page}; let doc = await Data.findOneAndUpdate({title:req.body[0].title},{page: req.body[0].page}); res.send(doc) })

Entonces, esto funcionará si especifico con mongoose que quiero actualizar la primera matriz [0], pero me gustaría actualizar todo, no estoy seguro si .map o forEach o un bucle es el camino a seguir.

Algunas ideas

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

0

En lugar de llamar a findOneAndUpdate en un bucle, creo que bulkWrite (docs) sería la mejor opción en este caso, por lo que no envía sus actualizaciones a Mongo una por una. Puede mapear sus operaciones de actualización y enviarlas en un lote. Consulte el siguiente fragmento para ver un ejemplo:

 router.post("/dataSend", async(req, res) => { const records = req.body const updateOps = records.map(record => { const updateOp = { 'updateOne': { 'filter': { 'title': record.title, }, 'update': { 'page': record.page }, } } return updateOp }) const result = await Data.bulkWrite(updateOps) res.send(result) })

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