$arrayElemAt (agregação)
Definição
Compatibilidade
Você pode utilizar o $arrayElemAt
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
$arrayElemAt
tem a seguinte sintaxe:
{ $arrayElemAt: [ <array>, <idx> ] }
A expressão <array>
pode ser qualquer expressão válida que resolva para uma array.
A expressão <idx>
pode ser qualquer expressão válida que resolva para um número inteiro.
Para mais informações sobre expressões, consulte Operadores de Expressão.
Comportamento
Se a expressão
<idx>
estiver atrelada a zero ou a um número inteiro positivo,$arrayElemAt
retornará o elemento na posiçãoidx
, contando a partir do início da array.Se a expressão
<idx>
for resolvida para um inteiro negativo,$arrayElemAt
retornará o elemento na posiçãoidx
, contando a partir do final da array.Se
idx
exceder os limites da array,$arrayElemAt
não retornará um resultado.Se a expressão
<array>
for resolvida para uma array indefinida,$arrayElemAt
retornaránull
.
Exemplo | Resultados |
---|---|
{ $arrayElemAt: [ [ 1, 2, 3 ], 0 ] } | 1 |
{ $arrayElemAt: [ [ 1, 2, 3 ], -2 ] } | 2 |
{ $arrayElemAt: [ [ 1, 2, 3 ], 15 ] } | |
{ $arrayElemAt: [ "$undefinedField", 0 ] } | null |
Exemplo
Uma coleção chamada users
contém os seguintes documentos:
{ "_id" : 1, "name" : "dave123", favorites: [ "chocolate", "cake", "butter", "apples" ] } { "_id" : 2, "name" : "li", favorites: [ "apples", "pudding", "pie" ] } { "_id" : 3, "name" : "ahn", favorites: [ "pears", "pecans", "chocolate", "cherries" ] } { "_id" : 4, "name" : "ty", favorites: [ "ice cream" ] }
O exemplo a seguir retorna o primeiro e o último elemento na array favorites
:
db.users.aggregate([ { $project: { name: 1, first: { $arrayElemAt: [ "$favorites", 0 ] }, last: { $arrayElemAt: [ "$favorites", -1 ] } } } ])
A operação retorna os seguintes resultados:
{ "_id" : 1, "name" : "dave123", "first" : "chocolate", "last" : "apples" } { "_id" : 2, "name" : "li", "first" : "apples", "last" : "pie" } { "_id" : 3, "name" : "ahn", "first" : "pears", "last" : "cherries" } { "_id" : 4, "name" : "ty", "first" : "ice cream", "last" : "ice cream" }