Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

$mod (agregação)

Nesta página

  • Definição
  • Sintaxe
  • Comportamento
  • Exemplo
$mod

Divide um número por outro e retorna o restante.

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.

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 determinam o tipo de saída $mod se:

  • O divisor é do tipo double , mas tem um valor inteiro.

  • O dividendo é do tipo int ou long.

Nesse caso, o MongoDB converte o divisor para o tipo de dados dividendo antes de executar a operação mod. O tipo de dados de saída é o tipo de dados de dividendo.

Quando o dividendo é negativo, o restante também é negativo. Para obter mais detalhes sobre esse comportamento, consulte a documentação JavaScript oficial do .

Para ver 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 }
] )

A seguinte agregação utiliza 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 }
]

Considere uma coleção modExample que contenha o seguinte documento:

db.modExample.insertOne( [
{ "_id" : 1, "dividend": -13, "divisor": 9 }
] )

Essa agregação utiliza 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 } ]
← $minuto (agregação)