$位与(聚合)
定义
新在版本6.3.
语法
以下$bitAnd
运算符的语法如下
{ $bitAnd: [ <expression1>, <expression2>, ... ] }
行为
如果操作数包含整数和长整型值,MongoDB会进行符号扩展计算出的整型结果,并返回长整型值。否则,如果操作数只包含整数或只包含长整型,MongoDB返回对应值类型的结果。
注意
如果数组中的任何参数是不同类型的数据,例如字符串、双精度浮点数或十进制数,MongoDB将返回错误。
如果参数是空数组,则操作返回NumberInt(-1)
。
如果任何操作数等于null
,则操作返回null
。
示例
本页上的示例使用switches
集合,其中包含以下文档
db.switches.insertMany( [ { _id: 0, a: NumberInt(0), b: NumberInt(127) }, { _id: 1, a: NumberInt(2), b: NumberInt(3) }, { _id: 2, a: NumberInt(3), b: NumberInt(5) } ] )
使用两个整数进行位运算AND
以下聚合操作在$bitAnd
操作符中使用了$project
阶段
db.switches.aggregate( [ { $project: { result: { $bitAnd: [ "$a", "$b" ] } } } ])
该操作返回以下结果
[ { _id: 0, result: 0 } { _id: 1, result: 2 } { _id: 2, result: 1 } ]
使用长整数和整数进行位运算AND
以下聚合操作在$bitAnd
操作符中使用了$project
阶段
db.switches.aggregate( [ { $project: { result: { $bitAnd: [ "$a", NumberLong("63") ] } } } ])
该操作返回以下结果
[ { _id: 0, result: NumberLong("0") } { _id: 1, result: NumberLong("2") } { _id: 2, result: NumberLong("3") } ]