$mod (Módulo)
Última atualização: 2026-10-09
$mod (Módulo)
$mod retorna o resto da divisão de dois valores em expressões de agregação. Ele recebe dois argumentos — o dividendo e o divisor — e retorna o resto após a divisão inteira. É útil para paginação, detecção de períodos e verificações de paridade, como julgar se um ID de pedido é ímpar ou par com módulo 2, ou fazer sharding por módulo de timestamp. Um divisor zero retorna null em vez de gerar erro. O sinal do resultado segue o dividendo. $mod funciona com inteiros e Decimals; tenha cuidado com valores de ponto flutuante, convertendo para Decimal quando necessário.
| Categoria | Matemática |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $mod: [ <expressão1>, <expressão2> ] }
⚙️ Parâmetros
| dividendo | Um valor numérico ou uma expressão que resolva para um. |
|---|---|
| divisor | A expressão do denominador; um divisor zero torna o resultado null. |
Retorno:O resto após a divisão; null quando o divisor é zero
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $mod: verificar se o número do pedido é ímpar
db.orders.aggregate([
{ $project: {
isOdd: { $eq: [{ $mod: ['$orderNo', 2] }, 1] }
} }
])
Saída:
{ '_id': 1, 'isOdd': true }
{ '_id': 2, 'isOdd': false }
📌 Notas
- Um divisor zero resulta em null sem gerar erro
- O resto assume o sinal do dividendo, então -7 mod 3 dá -1
- O módulo com ponto flutuante pode perder precisão; converta para Decimal antes
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO que acontece quando $mod divide por zero?
AEle retorna null sem gerar erro; use $ifNull para um padrão.
QComo o sinal do resultado de $mod é determinado?
AO resto segue o dividendo, então -7 mod 3 é -1.
QO $mod funciona com números de ponto flutuante?
ADecimals funcionam, mas doubles comuns podem ser imprecisos; converta para Decimal antes de aplicar o módulo.