Definición
Modificado en la versión 5.0.
El $ifNull expression evaluates input expressions for null values and returns:
The first non-null input expression value found.
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" }