$bitsAnySet
¶3.2版中的新功能。
$bitsAnySet
匹配在中设置(即)查询给出的任何位位置的文档。1
field
{ <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
该查询与以下文档匹配: