$bitsAnySet¶3.2版中的新功能。
$bitsAnySet匹配在中设置(即)查询给出的任何位位置的文档。1field
{ <field>: { $bitsAnySet: <numeric bitmask> } } |
{ <field>: { $bitsAnySet: < BinData bitmask> } } |
{ <field>: { $bitsAnySet: [ <position1>, <position2>, ... ] } } |
该field值必须是数字或
BinData实例。否则,$bitsAnySet
将与当前文档不匹配。
$bitsAnySet将返回错误。<position>必须为非负整数。位位置0从最低有效位开始。例如,十进制数254将具有以下位位置:| 位值 | 1个 | 1个 | 1个 | 1个 | 1个 | 1个 | 1个 | 0 |
| 位置 | 7 | 6 | 5 | 4 | 3 | 2 | 1个 | 0 |
查询不能将索引用于$bitsAnySet查询的一部分,尽管查询的其他部分可以使用索引(如果适用)。
$bitsAnySet将与无法表示为带符号的64位整数的数值不匹配。如果值太大或太小而无法容纳带符号的64位整数,或者具有小数部分,则可能是这种情况。
数字以符号扩展。例如,$bitsAnySet考虑将位位置200
设置为负数-5,但将位位置200清除为正数+5。
相反,BinData实例是零扩展的。例如,给定以下文档:
$bitsAnySet会认为外面的所有位x都是清楚的。
以下示例将使用具有以下文档的集合:
以下查询使用$bitsAnySet运算符来测试field是否a在位置4和5
(is 的二进制表示)上设置了任何位。BinData(0, "MC==")00110000
该查询与以下文档匹配: