$bitAnd (ビット論理積)
最終更新:2026-10-09
$bitAnd (ビット論理積)
$bitAnd は整数に対してビット単位の AND 演算を行います。MongoDB 6.3 以降で利用でき、整数の配列(または単一の数値)を受け付けます。権限ビットのチェック、フラグのフィルタリング、サブネットマスクの計算などに使われ、例えば権限を表す整数が特定のビットを含むかどうかを調べられます。引数が null または欠落している場合は null を返します。オペランドは int32 または int64 である必要があり、double、Decimal、その他の型はエラーになります。$bitOr、$bitXor、$bitNot とともにビット演算系の演算子群を構成します。
| カテゴリ | 数学 |
|---|---|
| MongoDB バージョン | 6.3+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $bitAnd: [ <integer1>, <integer2>, ... ] }
⚙️ パラメータ
| 整数 | int32 または int64 の整数、あるいはそれらに解決される式。少なくとも2つ。 |
|---|
戻り値:すべてのオペランドのビット単位 AND。null または欠落している場合は null
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $bitAnd: 権限ビット 4 が設定されているか確認
db.users.aggregate([
{ $project: {
hasWrite: { $ne: [{ $bitAnd: ['$permissions', 4] }, 0] }
} }
])
出力:
{ '_id': 1, 'hasWrite': true }
{ '_id': 2, 'hasWrite': false }
📌 注意事項
- 対応するのは int32 と int64 のみ。浮動小数点数はエラーになる
- 結果の型はオペランドと同じになる
- 結果を 0 と比較して、ビットが設定されているかを判定する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$bitAnd は浮動小数点数に対応していますか?
Aいいえ。int32 と int64 のみで、浮動小数点数の入力はエラーになります。
Q権限ビットがオンになっているかどうかを確認するには?
A値と対象のビットを AND します。結果が 0 以外ならビットが設定されています。
Q$bitAnd は何バージョンから使えますか?
AMongoDB 6.3 以降で利用できます。