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