$mod

在本页面

  • 例子

  • $mod

    • 选择字段的 value 除以除数的文档具有指定的余数(i.e.对 select 文档执行模运算)。要指定$mod表达式,请使用以下语法:
{ field: { $mod: [ divisor, remainder ] } }

在 version 2.6 中更改:传递具有更少或更多元素的 array 时$mod operator 错误。在以前的版本中,如果传递带有一个元素的 array,则$mod operator 使用0作为余数 value,如果传递带有两个以上元素的 array,$mod将忽略除前两个元素之外的所有元素。传递空 array 时,以前的版本会返回错误。有关详细信息,请参阅没有足够的元素错误和太多元素错误。

例子

使用$mod 来选择文档

考虑一个带有以下文档的集合inventory

{ "_id" : 1, "item" : "abc123", "qty" : 0 }
{ "_id" : 2, "item" : "xyz123", "qty" : 5 }
{ "_id" : 3, "item" : "ijk123", "qty" : 12 }

然后,以下查询选择inventory集合中的那些文档,其中qty字段的 value 4等于0

db.inventory.find( { qty: { $mod: [ 4, 0 ] } } )

该查询返回以下文档:

{ "_id" : 1, "item" : "abc123", "qty" : 0 }
{ "_id" : 3, "item" : "ijk123", "qty" : 12 }

没有足够的元素错误

传递少于两个元素的 array 时$mod operator 错误。

Array with Single Element

以下操作错误地将$mod operator 传递给包含单个元素的 array:

db.inventory.find( { qty: { $mod: [ 4 ] } } )

该语句导致以下错误:

error: {
     "$err" : "bad query: BadValue malformed mod, not enough elements",
     "code" : 16810
}

更改 version 2.6:在以前的版本中,如果传递带有一个元素的 array,则$mod operator 使用指定的元素作为除数,0作为余数 value。

空 Array

以下操作错误地将$mod operator 传递给空 array:

db.inventory.find( { qty: { $mod: [ ] } } )

该语句导致以下错误:

error: {
     "$err" : "bad query: BadValue malformed mod, not enough elements",
     "code" : 16810
}

更改 version 2.6:以前的版本返回以下错误:

error: { "$err" : "mod can't be 0", "code" : 10073 }

太多元素错误

传递带有两个以上元素的 array 时$mod operator 错误。

对于 example,以下操作尝试将$mod operator 与包含四个元素的 array 一起使用:

error: {
     "$err" : "bad query: BadValue malformed mod, too many elements",
     "code" : 16810
}

在 version 2.6 中更改:在以前的版本中,如果传递带有两个以上元素的 array,$mod将忽略除前两个元素之外的所有元素。