$mod (aggregation)
Nesta página
Definição
Sintaxe
The $mod
expression has the following syntax:
{ $mod: [ <expression1>, <expression2> ] }
The first argument is the dividend, and the second argument is the divisor. That is, the first argument is divided by the second argument.
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.
Starting in version 7.2, the output data type of the $mod
operator is
the larger of the two input data types.
Observação
Prior to version 7.2, the value and field type of inputs determine
the $mod
output type if:
The divisor is type
double
but has an integer value.The dividend is type
int
orlong
.
In this case, MongoDB converts the divisor to the dividend data
type before it performs the $mod
operation. The output data type
is the dividend data type.
Dividendo negativo
Quando o dividendo é negativo, o restante também é negativo. Para mais detalhes sobre esse comportamento, consulte a documentação oficial do 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 } ] )
The following aggregation uses the $mod
expression to
return the remainder of the hours
field divided by the tasks
field:
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
Consider a modExample
collection that contains the following
document:
db.modExample.insertOne( [ { "_id" : 1, "dividend": -13, "divisor": 9 } ] )
This aggregation uses the $mod
expression to return the remainder of
dividend
divided by the divisor
field:
db.modExample.aggregate( [ { $project: { remainder: { $mod: [ "$dividend", "$divisor" ] } } } ] )
A operação retorna os seguintes resultados:
[ { '_id' : 1, 'remainder' : -4 } ]