$bitOr(集計)
定義
バージョン 6.3 で追加。
構文
$bitOr
演算子の構文は次のとおりです。
{ $bitOr: [ <expression1>, <expression2>, ... ] }
動作
オペランドに整数と long 値の両方が含まれている場合、MongoDB は計算された整数結果を符号拡張し、long 値を返します。 そうではなく、オペランドに整数のみまたは long のみが含まれている場合、MongoDB は対応する値の型を持つ結果を返します。
注意
mongosh
のすべての数値は、整数ではなく double です。 mongosh
で整数を指定するには、 NumberInt()
またはNumberLong()
コンストラクターを使用します。 詳しくは、「 Int 32またはLong 」を参照してください。
MongoDB ドライバーが数値を処理する方法については、ドライバーのドキュメント を参照してください。
配列内のいずれかの引数がstring、double、decimal など、異なるデータ型である場合、MongoDB はエラーを返します。
引数が空の配列の場合、操作はNumberInt(0)
を返します。
配列内のいずれかの引数が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) } ] )
OR
2 つの整数を含むビット単位の
次の集計では、 $project
ステージで$bitOr
演算子を使用します。
db.switches.aggregate( [ { $project: { result: { $bitOr: [ "$a", "$b" ] } } } ])
この操作は次の結果を返します。
[ { _id: 0, result: 127 }, { _id: 1, result: 3 }, { _id: 2, result: 7 } ]
OR
Long および Integer を使用したビット単位の
次の集計では、 $project
ステージで$bitOr
演算子が使用されています。
db.switches.aggregate( [ { $project: { result: { $bitOr: [ "$a", NumberLong("63") ] } } } ])
この操作は次の結果を返します。
[ { _id: 0, result: Long("0") }, { _id: 1, result: Long("2") }, { _id: 2, result: Long("3") } ]