$mod (agregação)
Nesta página
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 qualquer expressão válida, desde que produzam números. Para mais informações sobre expressões, consulte Operadores de Expressão.
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
int
oulong
.
Nesse caso, o MongoDB converte o divisor para o tipo de dados de dividendo antes de executar a operação mod. O tipo de dados de saída é o tipo de dados de dividendos.
Dividendo negativo
Quando o dividendo é negativo, o restante também é negativo. Para obter mais detalhes sobre este comportamento,consulte a documentação JavaScript.
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 } ]