Definición
La $ifNull Expresión evalúa las expresiones de entrada para valores nulos y devuelve:
La primera entrada no nula Se encontró un valor de expresión.
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
Los ejemplos de esta página utilizan datos del conjunto de datos de muestra sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si se realizó alguna modificación en las bases de datos de muestra, es posible que se deban descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.
Expresión de entrada única
El siguiente ejemplo utiliza $ifNull para devolver:
ratedsi el camporatedno es nulo."Not Rated"string siratedes nulo o está ausente.
db.movies.aggregate( [ { $match: { year: { $lt: 1910 } } }, { $project: { _id: 0, title: 1, rated: { $ifNull: [ "$rated", "Not Rated" ] } } }, { $sort: { title: 1 } } ] )
[ { title: 'A Corner in Wheat', rated: 'G' }, { title: 'The Great Train Robbery', rated: 'TV-G' }, { title: 'The Kiss', rated: 'Not Rated' }, { title: 'The Kiss', rated: 'Not Rated' } ]
Expresiones de entrada múltiples
Nuevo en la versión 5.0.
El siguiente ejemplo utiliza $ifNull para devolver:
tomatoes.critic.ratingsi no es nulo.tomatoes.viewer.ratingsitomatoes.critic.ratinges nulo o falta ytomatoes.viewer.ratingno es nulo.0si tantotomatoes.critic.ratingcomotomatoes.viewer.ratingson nulos o faltan.
db.movies.aggregate( [ { $match: { year: { $lt: 1910 } } }, { $project: { _id: 0, title: 1, rating: { $ifNull: [ "$tomatoes.critic.rating", "$tomatoes.viewer.rating", 0 ] } } }, { $sort: { title: 1 } } ] )
[ { title: 'A Corner in Wheat', rating: 3.6 }, { title: 'The Great Train Robbery', rating: 7.6 }, { title: 'The Kiss', rating: 4 }, { title: 'The Kiss', rating: 0 } ]