$sortArray (Ordenar Elementos Dentro do Array)
Última atualização: 2026-10-09
$sortArray (Ordenar Elementos Dentro do Array)
$sortArray ordena os elementos dentro de um array e é novo no MongoDB 5.2. Arrays escalares usam um 1 simples (crescente) ou -1 (decrescente); arrays de objetos especificam chaves de ordenação com { campo: 1/-1 } ou a forma de array [ [ 'campo', 1 ] ] para ordenação por múltiplas chaves. Usos típicos: ordenar comentários por tempo decrescente ou produtos por preço crescente antes da exibição. Retorna um array novo sem mutar a origem; um objeto sortBy vazio gera erro.
| Categoria | Array |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $sortArray: { input: <array>, sortBy: <especificação de ordenação> } }
⚙️ Parâmetros
| input | A matriz a ordenar. |
|---|---|
| sortBy | A especificação de ordenação: 1/-1 para matrizes escalares; { field: 1/-1 } ou [ [ 'field', 1 ] ] para matrizes de objetos. |
Retorno:Uma nova matriz com elementos ordenados
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $sortArray: ordenar itens por preço crescente
db.orders.aggregate([
{ $project: {
sorted: { $sortArray: { input: '$items', sortBy: { price: 1 } } }
} }
])
Saída:
{ '_id': 1, 'sorted': [ { 'sku': 'B', 'price': 5 }, { 'sku': 'A', 'price': 9 } ] }
📌 Notas
- Exige MongoDB 5.2+; em versões mais antigas use $unwind, $sort e depois $group
- Elementos sem o campo da chave de ordenação vão para o fim
- Um objeto sortBy vazio gera erro; elementos null sempre vão por último
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO $sortArray suporta ordenação por múltiplos campos?
ASim — use a forma [ [ 'campo1', 1 ], [ 'campo2', -1 ] ].
QFunciona em versões antigas do MongoDB?
ANovo na 5.2; em versões mais antigas use $unwind, ordene com $sort e depois re-agrupe.
QPara onde vão os elementos sem a chave?
AEles vão para o fim do array.