$dateSubtract (Subtrair de uma Data)

Última atualização: 2026-10-09

$dateSubtract (Subtrair de uma Data)

$dateSubtract subtrai uma quantidade especificada de uma unidade de tempo de uma data e retorna a nova data — o espelho de $dateAdd. Ótimo para expiração de assinaturas, datas de início de cupons ou janelas de retenção. A unidade suporta year (ano), month (mês), week (semana), day (dia), hour (hora), minute (minuto), second (segundo) e millisecond (milissegundo); amount negativo equivale a adição. timezone é opcional e define o calendário usado. Como $dateAdd, funciona em $project, $set e outros estágios; data null/ausente resulta em null.

CategoriaData
Versão do MongoDB5.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $dateSubtract: { startDate: <expressão de data>, unit: <unidade>, amount: <número>, timezone: <fuso horário> } }

⚙️ Parâmetros

startDateA data da qual subtrair; um Date, timestamp ou expressão de data.
unitA unidade: year, month, week, day, hour, minute, second ou millisecond.
amountA quantidade a subtrair; positiva subtrai, negativa soma; fora do intervalo int64 lança erro.
timezoneFuso horário opcional para o cálculo.

Retorno:A nova data (BSON Date); null se startDate for null ou estiver ausente.

▶ Exemplo

Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):

// $dateSubtract: lembrar 3 dias antes do vencimento (UTC+8)
db.orders.aggregate([
  { $project: {
      remindAt: { $dateSubtract: { startDate: '$dueDate', unit: 'day', amount: 3, timezone: '+08:00' } }
  } }
])

Saída:

{ "_id": 1, "remindAt": ISODate("2026-10-22T00:00:00Z") }
{ "_id": 2, "remindAt": ISODate("2026-11-12T00:00:00Z") }

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QComo $dateSubtract e $dateAdd se relacionam?
AMesmos parâmetros, direção oposta; valores negativos os tornam equivalentes.
QO resultado pode ser anterior a 1970?
ASim — a Date BSON suporta timestamps negativos anteriores a 1970.
QQual é a diferença para $dateDiff?
A$dateSubtract retorna uma nova data; $dateDiff retorna uma diferença inteira.
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%