Definición
Modificado en la versión 5.0.
La expresión $ifNull evalúa las expresiones de entrada para valores nulos y devuelve:
La primera entrada no nula Valor deexpresión encontrado.
Un valor de expresión de reemplazo si todas las expresiones de entrada se evalúan como nulas.
$ifNull trata los valores indefinidos y los campos faltantes como nulos.
Compatibilidad
Puedes usar $ifNull 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
{ $ifNull: [ <input-expression-1>, ... <input-expression-n>, <replacement-expression-if-null> ] }
Ejemplos
Esta colección inventory se utiliza en los ejemplos:
db.inventory.insertMany( [ { "_id" : 1, "item" : "buggy", description: "toy car", "quantity" : 300 }, { "_id" : 2, "item" : "bicycle", description: null, "quantity" : 200 }, { "_id" : 3, "item" : "flag" } ] )
Expresión de entrada única
El siguiente ejemplo utiliza $ifNull para devolver:
descriptionsi no es nulo."Unspecified"string sidescriptiones nulo o está ausente.
db.inventory.aggregate( [ { $project: { item: 1, description: { $ifNull: [ "$description", "Unspecified" ] } } } ] )
Salida:
{ "_id" : 1, "item" : "buggy", "description" : "toy car" } { "_id" : 2, "item" : "bicycle", "description" : "Unspecified" } { "_id" : 3, "item" : "flag", "description" : "Unspecified" }
Expresiones de entrada múltiples
Nuevo en la versión 5.0.
El siguiente ejemplo utiliza $ifNull para devolver:
descriptionsi no es nulo.quantitysidescriptiones nulo o falta yquantityno es nulo."Unspecified"string sidescriptionyquantityson ambos nulos o faltan.
db.inventory.aggregate( [ { $project: { item: 1, value: { $ifNull: [ "$description", "$quantity", "Unspecified" ] } } } ] )
Salida:
{ "_id" : 1, "item" : "buggy", "value" : "toy car" } { "_id" : 2, "item" : "bicycle", "value" : 200 } { "_id" : 3, "item" : "flag", "value" : "Unspecified" }