Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Menu Docs
Página inicial do Docs
/ /

$cond (operador de expressão )

$cond

Avalia uma expressão booleana para retornar uma das duas expressões de retorno especificadas.

Você pode utilizar o $cond 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

A expressão $cond tem uma de duas sintaxes:

{ $cond: { if: <boolean-expression>, then: <true-case>, else: <false-case> } }

Ou:

{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }

$cond requer todos os três argumentos (if-then-else) para qualquer sintaxe.

Se <boolean-expression> for avaliado como true, então $cond será avaliado e retornará o valor da expressão <true-case>. Caso contrário, $cond avalia e retorna o valor da expressão <false-case>.

Os argumentos podem ser qualquer expressão válida. Para mais informações sobre expressões, consulte Expressões.

Dica

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.

A seguinte operação de agregação utiliza a expressão $cond para atribuir um preço de aluguel a cada filme. A operação cobra filmes com um imdb.rating maior ou igual a 9 em 5.99. A operação cobra todos os outros filmes em 3.99:

db.movies.aggregate( [
{ $match: { runtime: { $gt: 1000 } } },
{
$project:
{
title: 1,
rentalPrice:
{
$cond: {
if: { $gte: [ "$imdb.rating", 9 ] },
then: 5.99,
else: 3.99
}
}
}
}
] )
[
{ _id: ..., title: 'Baseball', rentalPrice: 5.99 },
{ _id: ..., title: 'Centennial', rentalPrice: 3.99 }
]

A operação a seguir usa a sintaxe de array da expressão $cond e retorna os mesmos resultados:

db.movies.aggregate( [
{ $match: { runtime: { $gt: 1000 } } },
{
$project:
{
title: 1,
rentalPrice:
{
$cond: [
{ $gte: [ "$imdb.rating", 9 ] },
5.99,
3.99
]
}
}
}
] )

Voltar

$concatArrays

Nesta página