$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.

CategoriaModificador de Atualização
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $push: { <campo de array>: { $each: [ <valor> ], $slice: <quantidade> } } }

⚙️ Parâmetros

campo de arrayO campo de matriz a limitar.
quantidadeA 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

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.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%