$bit(位运算更新)
最后更新:2026-10-09
$bit(位运算更新)
$bit 对整数字段执行位运算:与(and)、或(or)、异或(xor)。`{ $bit: { flags: { and: 254 } } }` 清除最低位。原子执行。字段不存在时不会自动创建,会报错。适合用位掩码紧凑存储权限、状态标志的场景,配合 $bits* 查询操作符使用。
| 分类 | 更新数组 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $bit: { <字段>: { and: <值> | or: <值> | xor: <值> } } }
⚙️ 参数
| 字段 | 要执行位运算的整数字段名。 |
|---|---|
| 位运算 | and、or、xor 之一,值为位掩码。 |
返回值:更新结果文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $bit:与运算清除最低位
// 254 的二进制是 11111110
db.users.updateOne(
{ _id: 1 },
{ $bit: { flags: { and: 254 } } }
)
// 或运算设置第 0 位
db.users.updateOne(
{ _id: 1 },
{ $bit: { flags: { or: 1 } } }
)
运行结果:
// flags 最低位被清除;第二个示例设置第 0 位
📌 注意事项
- 支持 and、or、xor 三种操作
- 字段不存在时不会自动创建,直接报错
- 只支持整数类型(int、long)
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$bit 支持哪些运算?
A与(and)、或(or)、异或(xor)。
Q$bit 字段不存在会怎样?
A不会自动创建,直接报错;需先用 $set 初始化。
Q怎么设置或清除某一位?
A设置用 or: 1 左移 n 位;清除用 and: 对 1 左移 n 位取反。