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

131
Vistas
Mongoose update actualiza el objeto anidado dentro de una matriz

Estoy tratando de consultar y actualizar un elemento en la matriz de listas (roster.schedule.monday.start) y luego actualizar el valor en este ejemplo.

monday.start estas dos claves deben ser dinámicas

Creo que el enfoque sería algo como esto.

  1. Buscar documento por _id

  2. encontrar objeto coincidente en matriz por _id

  3. actualizar valores anidados

He intentado esto a continuación sin suerte, ¿alguien podría ayudar en este problema?

muchas gracias

 // Mongoose query exports.updateRoster = (req, res) => { const editDay = req.body.day; const value = req.body.valueOfEntry; const userId = req.body.id; const rosterId = req.body.rosterId; const startPerieod = req.body.time; let dynObj = { ["rosters.$.schedule.$." + editDay + ".$." + startPerieod]: value, }; Carer.updateOne({ "rosters._id": rosterId }, { $set: dynObj }).exec( (err, roster) => { if (err) { return res.status(400).json({ error: err, }); } res.json(roster); } ); };
 // Schema const mongoose = require("mongoose"); const { ObjectId } = mongoose.Schema; const carersSchema = new mongoose.Schema({ rosters: [ { schedule: { monday: { start: { type: String }, finish: { type: String }, notes: { type: String }, }, ], }); module.exports = mongoose.model("Carers", carersSchema);
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Intente usar $ set y filtros de matriz como en el enlace

 Carer.findOneAndUpdate({_id: carerId}, { "$set": {[`rosters.$[outer].schedule.${editDay}.${startPerieod}`]: value} }, { "arrayFilters": [{ "outer._id": roasterId }] }, function(err, response) { if(err) console.log(err) console.log(response) })
about 4 years ago · Juan Pablo Isaza 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