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 Expressões.
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 |
---|---|
|
|
|
|
| |
|
|
Exemplo
Uma coleção chamada users
contém os seguintes documentos:
db.users.insertMany( [ { _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" } ]