Docs 菜单

Docs 主页开发应用程序MongoDB Manual

$mod(聚合)

在此页面上

  • 定义
  • 语法
  • 行为
  • 例子
$mod

将一个数字除以另一个数字并返回余数

$mod表达式采用以下语法:

{ $mod: [ <expression1>, <expression2> ] }

第一个参数是被除数,第二个参数是除数。也就是说,第一个参数除以第二个参数。

这些参数可为任意有效表达式,只要它们能解析为数字即可。有关表达式的更多信息,请参阅表达式操作符。

从版本7开始。 2 ( $mod操作符的输出数据类型)是两个输入数据类型中较大的一个。

注意

7之前的版本。 2 ,在以下情况下,输入的值和字段类型决定$mod输出类型:

  • 除数的类型为double ,但具有整数值。

  • 红利的类型为intlong

在这种情况下,MongoDB 会在执行取模运算之前将除数转换为被除数数据类型。输出数据类型是被除数数据类型。

当被除数为负数时,余数也为负数。有关此行为的更多详细信息,请参阅 官方 JavaScript 文档

有关示例,请参阅负股利。

请考虑包含以下文档的 conferencePlanning 集合:

db.conferencePlanning.insertMany( [
{ "_id" : 1, "city" : "New York", "hours" : 80, "tasks" : 7 },
{ "_id" : 2, "city" : "Singapore", "hours" : 40, "tasks" : 4 }
] )

以下聚合使用$mod表达式返回hours字段除以tasks字段的余数:

db.conferencePlanning.aggregate( [
{ $project: { remainder: { $mod: [ "$hours", "$tasks" ] } } }
] )

操作返回以下结果:

[
{ '_id' : 1, 'remainder' : 3 },
{ '_id' : 2, 'remainder' : 0 }
]

考虑包含以下文档的modExample集合:

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

此聚合使用$mod表达式返回dividend除以divisor字段后的余数:

db.modExample.aggregate( [
{ $project: { remainder: { $mod: [ "$dividend", "$divisor" ] } } }
] )

操作返回以下结果:

[ { '_id' : 1, 'remainder' : -4 } ]
← $minute(聚合)