$mod(聚合)
定义
语法
$mod
表达式的语法如下:
{ $mod: [ <expression1>, <expression2> ] }
第一个参数为被除数,而第二个参数为除数。也就是说,第一个参数除以第二个参数。
行为
参数可以是任何有效的表达式,只要它们解析为数字即可。 有关表达式的更多信息,请参阅表达式。
从版本 7.2 开始,$mod
操作符的输出数据类型是两种输入数据类型中较大的一个。
注意
在版本 7.2 之前,如果出现以下情况,输入的值和字段类型将确定 $mod
输出类型:
除数类型为
double
,但具有整数值。股息类型为
int
或long
。
在这种情况下,MongoDB 在执行 mod 操作之前将除数转换为被除数数据类型。输出数据类型为被除数数据类型。
负被除数
当被除数为负数时,余数也为负数。 有关此行为的更多详细信息,请参阅 官方 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 } ]