$bitsAnySet (いずれかのビットセット)
最終更新:2026-10-09
$bitsAnySet (いずれかのビットセット)
$bitsAnySet は、指定した位置のビットのうち少なくとも 1 つが 1 のドキュメントを照合します。`{ flags: { $bitsAnySet: 12 } }`(2 進数で 1100)は、ビット 2 またはビット 3 がセットされているドキュメントに一致します。いずれかを持つ権限チェックに適しています。整数と BinData のみ対応です。
| カテゴリ | ビット演算 |
|---|---|
| MongoDB バージョン | 3.2+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ <field>: { $bitsAnySet: <bitmask or position array> } }
⚙️ パラメータ
| フィールド | マッチ対象の整数または BinData フィールド。 |
|---|---|
| ビットマスク | 整数のビットマスクまたは位置配列(例: 12 または [2, 3])。 |
戻り値:一致するドキュメントのカーソル
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $bitsAnySet: ビット 2 または 3 がセットされている
// 12 は 2 進数で 1100
db.users.find({ flags: { $bitsAnySet: 12 } })
// 位置の配列で指定
db.users.find({ flags: { $bitsAnySet: [2, 3] } })
出力:
// フラグのビット 2 または 3 がセットされているユーザーを返す
📌 注意事項
- $bitsAllSet と違い、1 つのビットがセットされていれば一致する
- いずれかの権限が許可されているかの確認に適する
- 対応するのは int、long、BinData のみ
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$bitsAnySet はどんな用途に適していますか?
Aいずれかのフラグがオンかを確認する用途です。たとえば、ユーザーが何らかのロール権限を持っていれば通す、といった判定に使えます。
Q$bitsAnySet と $bitsAllSet はどう使い分けますか?
Aいずれか(OR)なら AnySet、すべて(AND)なら AllSet を使います。
Q位置の配列とビットマスクは併用できますか?
A両者は等価なので、どちらか一方の形式で指定します。