参考 > 参考 > 经营者 > 查询和投影运算符 > 评估查询运算符 > $ mod
在本页面
$mod
选择域除以除数的字段的值具有指定余数的文档(即执行模运算以选择文档)。要指定$mod表达式,请使用以下语法:
{ field: { $mod: [ divisor, remainder ] } }
$mod当传递的元素少于或多于两个的数组时,运算符会出错。有关详细信息,请参见没有足够的元素错误和 太多的元素错误。
考虑inventory包含以下文档的集合:
inventory
{ "_id" : 1, "item" : "abc123", "qty" : 0 } { "_id" : 2, "item" : "xyz123", "qty" : 5 } { "_id" : 3, "item" : "ijk123", "qty" : 12 }
然后,以下查询选择inventory集合中qty模 取值4等于的那些文档 0:
qty
4
0
db.inventory.find( { qty: { $mod: [ 4, 0 ] } } )
该查询返回以下文档:
{ "_id" : 1, "item" : "abc123", "qty" : 0 } { "_id" : 3, "item" : "ijk123", "qty" : 12 }
$mod传递少于两个元素的数组时,运算符会出错。
以下操作错误地向$mod运算符传递了包含单个元素的数组:
db.inventory.find( { qty: { $mod: [ 4 ] } } )
该语句导致以下错误:
error: { "$err" : "bad query: BadValue malformed mod, not enough elements", "code" : 16810 }
以下操作错误地向$mod运算符传递了一个空数组:
db.inventory.find( { qty: { $mod: [ ] } } )
$mod传递具有两个以上元素的数组时,运算符会出错。
例如,以下操作尝试将$mod 运算符与包含四个元素的数组一起使用:
error: { "$err" : "bad query: BadValue malformed mod, too many elements", "code" : 16810 }