Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

245
Views
¿Hay alguna forma de actualizar un objeto en una matriz de un documento mediante consulta en Mongoose?

Tengo una estructura de datos:

 { field: 1, field: 3, field: [ { _id: xxx , subfield: 1 }, { _id: xxx , subfield: 1 }, ] }

Necesito actualizar cierto elemento en la matriz.

Hasta ahora, solo puedo hacer eso sacando el objeto antiguo y empujando uno nuevo, pero cambia el orden de los archivos.

Mi implementación:

 const product = await ProductModel.findOne({ _id: productID }); const price = product.prices.find( (price: any) => price._id == id ); if(!price) { throw { type: 'ProductPriceError', code: 404, message: `Coundn't find price with provided ID: ${id}`, success: false, } } product.prices.pull({ _id: id }) product.prices.push(Object.assign(price, payload)) await product.save()

y me pregunto si hay alguna forma atómica de implementar eso. Porque este enfoque no parece estar asegurado.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Sí, puede actualizar un objeto en particular en la matriz si puede encontrarlo. Eche un vistazo al operador posicional '$' aquí .

Su implementación actual usando mongoose será algo así:

 await ProductModel.updateOne( { _id: productID, 'prices._id': id },//Finding Product with the particular price { $set: { 'prices.$.subField': subFieldValue } }, );

Observe el símbolo '$' en los precios.$.subcampo . MongoDB es lo suficientemente inteligente como para actualizar solo el elemento en el índice que encontró la consulta.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!