Definição
Alterado na versão 5.0.
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
Esta coleção inventory
é usada nos exemplos:
db.inventory.insertMany( [ { _id: 1, item: "buggy", description: "toy car", quantity: 300 }, { _id: 2, item: "bicycle", description: null, quantity: 200 }, { _id: 3, item: "flag" } ] )
Expressão de entrada única
O exemplo a seguir usa $ifNull
para retornar:
description
se não for nulo."Unspecified"
string sedescription
for nulo ou ausente.
db.inventory.aggregate( [ { $project: { item: 1, description: { $ifNull: [ "$description", "Unspecified" ] } } } ] )
Saída:
{ _id: 1, item: "buggy", description: "toy car" } { _id: 2, item: "bicycle", description: "Unspecified" } { _id: 3, item: "flag", description: "Unspecified" }
Expressões de entrada múltiplas
Novidades na versão 5.0.
O exemplo a seguir usa $ifNull
para retornar:
description
se não for nulo.quantity
sedescription
for nulo ou ausente equantity
não for nulo."Unspecified"
string sedescription
equantity
forem nulos ou ausentes.
db.inventory.aggregate( [ { $project: { item: 1, value: { $ifNull: [ "$description", "$quantity", "Unspecified" ] } } } ] )
Saída:
{ _id: 1, item: "buggy", value: "toy car" } { _id: 2, item: "bicycle", value: 200 } { _id: 3, item: "flag", value: "Unspecified" }