$log2(二底对数)
最后更新:2026-10-09
$log2(二底对数)
$log2返回数值以2为底的对数,常用于二分查找深度、二叉树高度、位宽计算等计算机场景,例如判断一个数需要多少二进制位。参数为null或缺失时返回null;输入必须大于0,0或负数返回null。它是$log的特例,底数固定为2,代码更简洁。$log2是2的幂运算的逆运算,与$pow: [2, x]互为反操作。
| 分类 | 数学 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $log2: <数值表达式> }
⚙️ 参数
| 数值 | 数值或解析为数值的表达式,必须大于0。 |
|---|
返回值:输入以2为底的对数;非正数、null或缺失时返回null
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $log2:判断整数需要多少二进制位
db.numbers.aggregate([
{ $project: {
bits: { $ceil: { $add: [{ $log2: '$value' }, 1] } }
} }
])
运行结果:
{ '_id': 1, 'bits': 10 }
{ '_id': 2, 'bits': 8 }
📌 注意事项
- 底数固定为2,等同于$log: [x, 2]
- 输入必须大于0,0或负数返回null
- 与$pow的2次幂互为逆运算
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q$log2在什么场景用?
A二分查找、二叉树深度、位宽估算等计算机场景。
Q$log2(1024)等于多少?
A等于10,因为2的10次方是1024。
Q$log2和$pow是什么关系?
A互为逆运算,$pow: [2, x]求2的x次方,$log2求反向。