Estoy usando un aggregate y me gustaría agregar una property Boolean por Document si todas las propiedades en un subArray en el Document son verdaderas.
En mi ejemplo a continuación... CONFLICTS es una submatriz de documentos que contienen una property Boolean llamada Resolved . Solo quiero agregar un nuevo campo allResolved para si se resuelven todos los conflictos.
Entonces... en mi etapa addFields , tengo algo como
{ '$project': { 'allResolved': { '$allElementsTrue': '$CONFLICTS.resolved' }, } } entonces el equivalente de JS es const allResolved = CONFLICTS.every(conflict => conflict.resolved)
Pero esto parece volver siempre true , lo cual no es correcto.
Consulta
aggregate( [{"$set": {"allResolved": {"$and": [{"$isArray":["$conflicts"]}, {"$not":[{"$eq":["$conflicts", []]}]}, {"$reduce": {"input":"$conflicts", "initialValue":true, "in": {"$and":[{"$eq":["$$this.Resolved", true]}, "$$value"]}}}]}}}])