$ifNull (agregação)
Nesta página
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" }