$bit (ビット演算更新)
最終更新:2026-10-09
$bit (ビット演算更新)
$bit は、整数フィールドに対してビット演算(AND、OR、XOR)を行います。`{ $bit: { flags: { and: 254 } } }` で最下位ビットをクリアできます。アトミックで、多くの更新演算子と違い、存在しないフィールドを作成せずにエラーを投げます。ビットマスクによる権限やフラグの管理に最適で、$bits* 系クエリ演算子と組み合わせて使えます。
| カテゴリ | 配列更新 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $bit: { <field>: { and: <value> | or: <value> | xor: <value> } } }
⚙️ パラメータ
| フィールド | ビット演算を適用する整数フィールド。 |
|---|---|
| ビット演算 | and、or、xor のいずれかとビットマスク値。 |
戻り値:更新結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $bit: AND で最下位ビットをクリア
// 254 は 2 進数で 11111110
db.users.updateOne(
{ _id: 1 },
{ $bit: { flags: { and: 254 } } }
)
// OR でビット 0 をセット
db.users.updateOne(
{ _id: 1 },
{ $bit: { flags: { or: 1 } } }
)
出力:
// 最下位ビットがクリアされる。2 つ目の例はビット 0 をセットする
📌 注意事項
- and、or、xor に対応
- 存在しないフィールドは作成せず、エラーを投げる
- 整数(int、long)のみ対応
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$bit はどの演算に対応していますか?
AAND、OR、XOR です。
Q$bit の対象フィールドが存在しない場合は?
A作成せずにエラーになります。先に $set で初期化してください。
Q単一ビットをセット・クリアするには?
Aセットは or: 1 を n 桁左シフトした値、クリアはそのビット単位 NOT を and に指定します。