定义
6.3版本新增。
语法
$bitOr操作符的语法如下:
{ $bitOr: [ <expression1>, <expression2>, ... ] }
行为
如果操作数同时包含整数和长整型值,MongoDB 将对计算出的整数结果进行符号扩展并返回长整型值。 否则,如果操作数仅包含整数或仅长整型,MongoDB 将返回相应值类型的结果。
注意
All numbers in mongosh are doubles, not integers. To specify integers in mongosh, use the Int32() or the Long() constructor. To learn more, see Int32 or Long.
如需了解 MongoDB 驱动程序如何处理数值,请参阅驱动程序的文档。
如果数组中的任何参数属于不同的数据类型,例如字符串、双精度浮点数或十进制数,MongoDB 将返回错误。
如果参数为空数组,则该操作返回Int32(0) 。
如果数组中的任何参数等于null ,则该操作返回null 。
示例
本页上的示例使用switchescollection,其中包含以下文档:
db.switches.insertMany( [ { _id: 0, a: Int32(0), b: Int32(127) }, { _id: 1, a: Int32(2), b: Int32(3) }, { _id: 2, a: Int32(3), b: Int32(5) } ] )
具有两个整数的按位 OR
以下聚合在$project阶段使用$bitOr操作符:
db.switches.aggregate( [ { $project: { result: { $bitOr: [ "$a", "$b" ] } } } ])
操作返回以下结果:
[ { _id: 0, result: 127 }, { _id: 1, result: 3 }, { _id: 2, result: 7 } ]
带有长整型值的按位 OR
以下聚合在$project阶段使用$bitOr操作符:
db.switches.aggregate( [ { $project: { result: { $bitOr: [ "$a", Long("63") ] } } } ])
操作返回以下结果:
[ { _id: 0, result: Long("0") }, { _id: 1, result: Long("2") }, { _id: 2, result: Long("3") } ]