$bitNot(按位取反)
最后更新:2026-10-09
$bitNot(按位取反)
$bitNot对整数做按位取反(补码运算),是位运算中唯一只接受一个操作数的操作符,MongoDB 6.3起可用。结果等于-x-1,例如5取反得-6。常用于生成互补掩码、位运算中的取反操作等场景。参数为null或缺失时返回null;操作数必须是int32或int64。注意取反后数值符号会翻转,这里是补码语义而非简单的反码。
| 分类 | 数学 |
|---|---|
| MongoDB 版本 | 6.3+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $bitNot: <整数表达式> }
⚙️ 参数
| 整数 | int32或int64整数,或解析为整数的表达式。 |
|---|
返回值:输入整数的按位取反(-x-1);null或缺失返回null
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $bitNot:权限位取反生成排除掩码
db.users.aggregate([
{ $project: {
denied: { $bitNot: '$allowedBits' }
} }
])
运行结果:
{ '_id': 1, 'denied': -6 }
{ '_id': 2, 'denied': -1 }
📌 注意事项
- 结果是补码取反,等于-x-1
- 只接受一个操作数
- 仅支持int32和int64
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$bitNot(5)等于多少?
A等于-6,因为补码取反的公式是-x-1。
Q$bitNot为什么结果带负号?
A补码取反会翻转最高位,导致符号位变化。
Q$bitNot能用在哪?
A生成互补掩码,或与其他位运算组合实现位集合操作。