$slice (Projetar Subconjunto de Array)
Última atualização: 2026-10-09
$slice (Projetar Subconjunto de Array)
$slice em uma projeção retorna um subconjunto de um campo de array sem modificar o documento. `{ tags: { $slice: 2 } }` retorna os 2 primeiros elementos; `{ tags: { $slice: [1, 3] } }` pula 1 e pega 3. Comum em páginas de listagem que mostram apenas os primeiros comentários ou anexos. Ele compartilha o nome com o modificador de atualização $slice, mas serve a um propósito diferente.
| Categoria | Projeção |
|---|---|
| Versão do MongoDB | 2.4+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ <campo de array>: { $slice: <quantidade> } } ou { <campo de array>: { $slice: [ <pular>, <quantidade> ] } }
⚙️ Parâmetros
| campo de array | O campo de matriz a fatiar. |
|---|---|
| quantidade ou array | Uma contagem para os primeiros N, ou [skip, count] para pular e depois obter. |
Retorno:Documentos projetados com o subconjunto de matriz solicitado
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $slice: retorna apenas as 3 primeiras tags
db.articles.find(
{ _id: 1 },
{ title: 1, tags: { $slice: 3 } }
)
// Pula 1, pega 2
db.articles.find(
{ _id: 1 },
{ comments: { $slice: [1, 2] } }
)
Saída:
// Retorna o título e as 3 primeiras tags; a segunda consulta pula 1 comentário e pega 2
📌 Notas
- Afeta apenas a projeção, nunca o documento de origem
- Um argumento pega os primeiros N; dois argumentos são [pular, quantidade]
- Mesmo nome que o modificador de atualização $slice, papel diferente
🏷️ Tags Relacionados
💡 Casos Relacionados
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO $slice de projeção é o mesmo que o $slice de atualização?
ANão. O $slice de projeção molda o resultado; o $slice de atualização limita o array após $push.
QComo pego os últimos elementos de um array?
AUse um negativo: { tags: { $slice: -3 } } pega os últimos 3.
Q$slice pode combinar com outras projeções?
ASim, desde que não entrem em conflito.