Docs 主页 → 开发应用程序 → MongoDB Manual
$mod(聚合)
定义
语法
$mod
表达式采用以下语法:
{ $mod: [ <expression1>, <expression2> ] }
第一个参数是被除数,第二个参数是除数。也就是说,第一个参数除以第二个参数。
行为
这些参数可为任意有效表达式,只要它们能解析为数字即可。有关表达式的更多信息,请参阅表达式操作符。
从版本7开始。 2 ( $mod
操作符的输出数据类型)是两个输入数据类型中较大的一个。
注意
7之前的版本。 2 ,在以下情况下,输入的值和字段类型决定$mod
输出类型:
除数的类型为
double
,但具有整数值。红利的类型为
int
或long
。
在这种情况下,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 } ]