$mod聚合运算符返回除法余数,就是返回一个数除以另一个数的余数。
语法
{ $mod: [ <expression1>, <expression2> ] }
第一个参数是被除数,第二个参数是除数,也就是说,第一个参数除以第二个参数。
使用
- 参数可以是任何有效的表达式,只要它们解析为数字即可。
- 从版本 7.2 开始,
$mod运算符的输出数据类型是两个输入数据类型中较大的一个。 - 在这种情况下,MongoDB 在执行 mod 运算之前将除数转换为被除数数据类型。输出数据类型是被除数数据类型。
- 当被除数为负数时,余数也为负数。
举例
创建conferencePlanning集合有下列文档:
db.conferencePlanning.insertMany( [
{ "_id" : 1, "city" : "New York", "hours" : 80, "tasks" : 7 },
{ "_id" : 2, "city" : "Singapore", "hours" : 40, "tasks" : 4 }
] )
下面的聚合使用$mod表达式返回小时字段hour除以任务字段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 } ]

3810

被折叠的 条评论
为什么被折叠?



