Menu Docs

$mod (aggregation)

$mod

Divides one number by another and returns the remainder.

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.

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 or long.

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.

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.

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 }
]

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 } ]