$bitsAllSet (全ビットセット)
最終更新:2026-10-09
$bitsAllSet (全ビットセット)
$bitsAllSet は、指定した位置のビットがすべて 1 にセットされているドキュメントを照合します。`{ flags: { $bitsAllSet: 5 } }`(2 進数で 101)は、ビット 0 とビット 2 がともに 1 のドキュメントに一致します。ビット番号は最下位ビット(0)から数えます。整数(int、long)と BinData で動作し、ビットマスクによる権限管理に最適です。
| カテゴリ | ビット演算 |
|---|---|
| MongoDB バージョン | 3.2+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <field>: { $bitsAllSet: <bitmask or position array> } }
⚙️ パラメータ
| フィールド | マッチ対象の整数または BinData フィールド。 |
|---|---|
| ビットマスク | 整数のビットマスクまたは位置配列(例: 5 または [0, 2])。 |
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $bitsAllSet: ビット 0 と 2 がともにセットされている
// 5 は 2 進数で 101
db.users.find({ flags: { $bitsAllSet: 5 } })
// 位置の配列で指定しても同じ
db.users.find({ flags: { $bitsAllSet: [0, 2] } })
出力:
// フラグのビット 0 と 2 が両方セットされているユーザーを返す
📌 注意事項
- ビット番号は最下位ビット(0)から数える
- 整数(int、long)と BinData でのみ動作する
- $bitsAnySet と違い、列挙したビットがすべて 1 である必要がある
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$bitsAllSet と $bitsAnySet の違いは?
A$bitsAllSet は列挙したビットがすべて 1 である必要があります。$bitsAnySet は 1 つでもセットされていれば一致します。
Qビットマスクの代わりに位置の配列を使えますか?
Aはい。{ $bitsAllSet: [0, 2] } は { $bitsAllSet: 5 } と同じ意味です。
Q$bitsAllSet は浮動小数点数に対応していますか?
Aいいえ。int、long、BinData のみ対応しています。