$subtract (Subtração)

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

$subtract (Subtração)

$subtract realiza subtração em expressões de agregação, a contraparte de $add. Ele aceita exatamente dois argumentos: número menos número retorna a diferença, data menos data retorna milissegundos e data menos milissegundos retorna uma data anterior. É frequentemente usado em $project ou $set para calcular diferenças, como um preço com desconto ou o tempo decorrido entre dois timestamps. Observe que $subtract aceita apenas dois argumentos e não pode receber vários operandos como $add. Qualquer argumento null ou ausente resulta em null.

CategoriaMatemática
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $subtract: [ <expressão1>, <expressão2> ] }

⚙️ Parâmetros

minuendoUm valor numérico, uma data ou uma expressão que resolva para qualquer um deles.
subtraendoUm número (milissegundos) ou uma expressão de data a subtrair do minuendo.

Retorno:A diferença numérica; data menos data retorna milissegundos; data menos milissegundos retorna uma data

▶ Exemplo

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

// $subtract: calcular preço após o desconto
db.orders.aggregate([
  { $project: {
      finalPrice: { $subtract: ['$price', '$discount'] }
  } }
])

Saída:

{ '_id': 1, 'finalPrice': 90 }
{ '_id': 2, 'finalPrice': 45 }

📌 Notas

Mais casos práticos em breve.

📚 Tutoriais Relacionados

❓ Perguntas Frequentes

QO $subtract consegue calcular a diferença em dias entre duas datas?
AEle retorna milissegundos; divida por 86400000 para dias, ou use $dateDiff com a unidade day.
QComo $subtract e $add se relacionam?
ASão inversos; $subtract aceita dois argumentos enquanto $add aceita vários.
QO que data menos milissegundos retorna?
AUma data anterior; por exemplo, subtrair 86400000 de uma data de pedido dá o dia anterior.
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%