$slice (Obter Subconjunto do Array)
Última atualização: 2026-10-09
$slice (Obter Subconjunto do Array)
$slice extrai uma parte de um array. Suporta duas formas: a forma de dois argumentos pega os primeiros n elementos (ou os últimos n quando n é negativo), e a forma de três argumentos pula um número de elementos e depois pega uma contagem especificada. Usos típicos: paginar comentários, pegar os pedidos mais recentes ou limitar o número de tags retornadas. Retorna um array novo sem modificar o original; um argumento null resulta em null. É a contraparte em array de $substr para strings.
| Categoria | Array |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $slice: [ <array>, <contagem> ] } ou { $slice: [ <array>, <pular>, <contagem> ] }
⚙️ Parâmetros
| array | A matriz a fatiar. |
|---|---|
| quantidade | O número de elementos a obter; quando negativo na forma de dois argumentos, obtém os últimos n a partir do fim. |
| pular | Opcional; elementos a ignorar primeiro na forma de três argumentos; negativo começa a contar a partir do fim. |
Retorno:A submatriz extraída; null se um argumento for null
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $slice: pegar as primeiras 3 tags
db.posts.aggregate([
{ $project: {
topTags: { $slice: ['$tags', 3] }
} }
])
Saída:
{ '_id': 1, 'topTags': [ 'mongo', 'db', 'nosql' ] }
📌 Notas
- Forma de dois argumentos [array, n]: n positivo pega os primeiros n, n negativo pega os últimos n
- Forma de três argumentos [array, pular, contagem]: um pular negativo começa a contar de trás para frente a partir do fim
- Fatiar além do comprimento do array nunca gera erro; retorna o que existir
🏷️ Tags Relacionados
💡 Casos Relacionados
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QComo pego os últimos elementos com $slice?
AUse uma contagem negativa, ex.: { $slice: ['$arr', -3] } para os últimos 3.
QO $slice suporta paginação?
ASim — { $slice: ['$arr', 10, 10] } pula 10 e pega 10.
QFatiar além do comprimento gera erro?
ANão — retorna os elementos que existem, sem preencher com null.