Definição
Sintaxe
A expressão $mod tem a seguinte sintaxe:
{ $mod: [ <expression1>, <expression2> ] } 
O primeiro argumento é o dividendo e o segundo argumento é o divisor. Ou seja, o primeiro argumento é dividido pelo segundo argumento.
Comportamento
Os argumentos podem ser qualquerexpressão válida, desde que produzam números. Para mais informações sobre expressões, consulte Expressões.
A partir da versão 7.2, o tipo de dados de saída do operador $mod é o maior dos dois tipos de dados de entrada.
Observação
Antes da versão 7.2, o valor e o tipo de campo de entradas determinavam o tipo de saída $mod se:
- O divisor é do tipo - double, mas tem valor inteiro.
- O dividendo é do tipo - intou- long.
Nesse caso, o MongoDB converte o divisor no tipo de dados dividendo antes de executar a operação $mod. O tipo de dados de saída é o tipo de dados de dividendo.
Dividendo negativo
Quando o dividendo é negativo, o restante também é negativo. Para obter mais detalhes sobre este comportamento, consulte a documentação JavaScript oficial.
Para obter um exemplo, consulte Dividendo negativo.
Exemplo
Considere uma collection conferencePlanning com os seguintes documentos:
db.conferencePlanning.insertMany( [    { "_id" : 1, "city" : "New York", "hours" : 80, "tasks" : 7 },    { "_id" : 2, "city" : "Singapore", "hours" : 40, "tasks" : 4 } ] ) 
A agregação a seguir usa a expressão $mod para retornar o restante do campo hours dividido pelo campo tasks:
db.conferencePlanning.aggregate( [   { $project: { remainder: { $mod: [ "$hours", "$tasks" ] } } } ] ) 
A operação retorna os seguintes resultados:
[   { '_id' : 1, 'remainder' : 3 },   { '_id' : 2, 'remainder' : 0 } ] 
Dividendo negativo
Considere uma coleção modExample que contenha o seguinte documento:
db.modExample.insertOne( [    { "_id" : 1, "dividend": -13, "divisor": 9 } ] ) 
Essa agregação usa a expressão $mod para retornar o restante de dividend dividido pelo campo divisor:
db.modExample.aggregate( [   { $project: { remainder: { $mod: [ "$dividend", "$divisor" ] } } } ] ) 
A operação retorna os seguintes resultados:
[ { '_id' : 1, 'remainder' : -4 } ]