Definição
A expressão $ifNull avalia as expressões de entrada quanto a valores nulos e retorna:
O primeiro valorde expressão de entrada não nula encontrado.
Um valor de expressão de substituição se todas as expressões de entrada avaliarem para nulo.
$ifNull trata valores indefinidos e campos ausentes como nulos.
Compatibilidade
Você pode utilizar o $ifNull para implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
{ $ifNull: [ <input-expression-1>, ... <input-expression-n>, <replacement-expression-if-null> ] }
Exemplos
Os exemplos nesta página utilizam dados do conjunto de dados de amostra sample_mflix. Para obter detalhes sobre como carregar esse conjunto de dados em sua implantação autogerenciada do MongoDB , consulte Carregar o conjunto de dados de amostra. Se você fez modificações nos bancos de dados de amostra, talvez seja necessário descartar e recriar os bancos de dados para executar os exemplos nesta página.
Expressão de entrada única
O exemplo a seguir usa $ifNull para retornar:
ratedse o camporatednão for nulo."Not Rated"string seratedfor nulo ou 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' } ]
Expressões de entrada múltiplas
Novidades na versão 5.0.
O exemplo a seguir usa $ifNull para retornar:
tomatoes.critic.ratingse não for nulo.tomatoes.viewer.ratingsetomatoes.critic.ratingfor nulo ou ausente etomatoes.viewer.ratingnão for nulo.0setomatoes.critic.ratingetomatoes.viewer.ratingforem nulos ou ausentes.
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 } ]