Definición
Compatibilidad
Puedes usar $cond para implementaciones alojadas en los siguientes entornos:
MongoDB Atlas: El servicio totalmente gestionado para implementaciones de MongoDB en la nube
MongoDB Enterprise: La versión basada en suscripción y autogestionada de MongoDB
MongoDB Community: La versión de MongoDB con código fuente disponible, de uso gratuito y autogestionada.
Sintaxis
La expresión $cond tiene una de dos sintaxis posibles:
{ $cond: { if: <boolean-expression>, then: <true-case>, else: <false-case> } }
O:
{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }
$cond requiere los tres argumentos (if-then-else) para ambas sintaxis.
Si el <boolean-expression> se evalúa como true, entonces $cond evalúa y devuelve el valor de la expresión <true-case>. De lo contrario, $cond evalúa y devuelve el valor de la expresión <false-case>.
Los argumentos pueden ser cualquier expresión válida. Para obtener más información sobre las expresiones, consulta Expresiones.
Tip
Ejemplo
El siguiente ejemplo usa una colección inventory con los siguientes documentos:
db.inventory.insertMany( [ { _id: 1, item: "abc1", qty: 300 }, { _id: 2, item: "abc2", qty: 200 }, { _id: 3, item: "xyz1", qty: 250 } ] )
La siguiente operación de agregación utiliza la expresión $cond para establecer el valor de discount en 30 si el valor de qty es mayor o igual a 250 y en 20 si el valor de qty es menor que 250:
db.inventory.aggregate( [ { $project: { item: 1, discount: { $cond: { if: { $gte: [ "$qty", 250 ] }, then: 30, else: 20 } } } } ] )
La operación devuelve los siguientes resultados:
{ _id: 1, item: "abc1", discount: 30 } { _id: 2, item: "abc2", discount: 20 } { _id: 3, item: "xyz1", discount: 30 }
La siguiente operación utiliza la sintaxis de arreglo de la expresión $cond y devuelve los mismos resultados:
db.inventory.aggregate( [ { $project: { item: 1, discount: { $cond: [ { $gte: [ "$qty", 250 ] }, 30, 20 ] } } } ] )