Para el fondo, tengo que crear un campo en una colección, pero SOLO si otro campo conocido (una matriz) no está vacío. Estoy tratando de hacer un filtro booleano con $ y algunas condiciones:
$set: { clientsAllowed: { $cond: { if: { $and: [ { businessAllowed: { $exists: true }, }, { businessAllowed: { $type: "array" }, }, { businessAllowed: { $ne: [] }, }, ], }, then: [...], else: [...], }, } }Pero me sale este error:
$conjunto no válido :: causado por :: Expresión no reconocida '$existe'
¿El $exists mal formateado? ¿O es el escenario $and ? ¿Algunas ideas?
Escriba cond para businessAllowed es suficiente. No es necesario comprobar si existe o no.
db.collection.aggregate([ { $set: { clientsAllowed: { $cond: { if: { $and: [ { "$eq": [ { $type: "$businessAllowed" }, "array" ] }, { $ne: [ "$businessAllowed", [] ] } ] }, then: [], else: [] } } } } ])