$slice (Limitar Tamanho de Array, Atualização)
Última atualização: 2026-10-09
$slice (Limitar Tamanho de Array, Atualização)
$slice como modificador de atualização limita o tamanho de um array após $push. `{ $push: { log: { $each: [msg], $slice: -10 } } }` mantém apenas as 10 entradas mais recentes. Valores negativos cortam do fim, positivos do início. Combinado com $each, cria um log rolante — mesmo nome que o $slice de projeção, mas um papel diferente.
| Categoria | Modificador de Atualização |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $push: { <campo de array>: { $each: [ <valor> ], $slice: <quantidade> } } }
⚙️ Parâmetros
| campo de array | O campo de matriz a limitar. |
|---|---|
| quantidade | A contagem a manter; negativa mantém a partir do fim. |
Retorno:O resultado da atualização
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $slice: mantém as 10 entradas de log mais recentes
// -10 mantém 10 do fim
db.devices.updateOne(
{ _id: 1 },
{ $push: { log: { $each: ['boot ok'], $slice: -10 } } }
)
Saída:
// Após acrescentar, log é cortado para as 10 entradas mais recentes
📌 Notas
- Deve ser usado com $each dentro de $push
- Negativo mantém do fim; positivo do início
- Mesmo nome que o $slice de projeção, papel diferente
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO $slice de atualização é o mesmo que o $slice de projeção?
ANão. O $slice de atualização corta o array; o de projeção apenas molda os resultados.
QO que significa $slice: -10?
AManter 10 entradas do fim, criando um log rolante.
Q$slice deve ser combinado com $each?
ASim, desde o MongoDB 5.0 $slice funciona apenas com $each.