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
y mientras busco, también quiero actualizar la matriz work_start con un nuevo objeto
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() } } } }, }