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

357
Vistas
¿Cómo usar $ cond para insertar en un campo en mongodb findOneAndUpdate?

tengo un esquema asi

 { _id: ObjectId('xyz'), project_type: 'A', // enum ['A', 'B'] status: 'Working', // enum ['Pending', 'Working', 'Completed'] userId: ObjectId('abc'), work_start: [{ userId: ObjectId('pqr'), timestamp: Date() }], work_submitted: [{ userId: ObjectId('pqr'), timestamp: Date() }] }

Quiero obtener el documento en función de la siguiente condición

  • Si el estado es 'Pendiente'
  • Si el estado es 'Trabajando' e ID de usuario = ID de usuario dado

y mientras busco, también quiero actualizar la matriz work_start con un nuevo objeto

  1. Si el estado era 'Pendiente', agregue un nuevo {userId: ObjectId, timestamp: Date()} a la matriz work_start
  2. Si el estado era 'Trabajando' y el ID de usuario = ID de usuario dado, no agregue un nuevo objeto a la matriz work_start

Aquí está la consulta que he escrito pero no puedo cumplir con la segunda condición

 collection.findOneAndUpdate( { project_type: 'A', $or: [ { status: 'Pending' }, { $and: [ { status: 'Working' }, { userId: userId } ] } ] }, { $push: { work_start: { userId, timestamp: new Date() } }, // Here I want to use the conditional block $set: { status: 'Working', userId: userId } }, { sort: { "created_on": 1 }, returnDocument: 'after' // return updated document }, );

¿Cómo puedo hacer algo como esto?

 $cond: { if : { status: 'Working' and {userId: userId}}, then: // do nothing else: { $push: { work_start: { userId, timestamp: new Date() } } } }, }
about 4 years ago · Juan Pablo Isaza
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