$log2 (底2の対数)
最終更新:2026-10-09
$log2 (底2の対数)
$log2 は数値の底 2 の対数を返します。二分探索の深さ、二分木の高さ、ビット幅の見積もり(数値に必要なビット数など)といった計算機科学の文脈で使われます。null または欠落した引数は null を返します。入力は正でなければならず、0 や負の値は null を返します。底が 2 に固定された $log の特殊形で、コードを簡潔に保ちます。$log2 は 2 の累乗を逆算するため、$pow: [2, x] の対になる演算子です。
| カテゴリ | 数学 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $log2: <numeric-expression> }
⚙️ パラメータ
| 数値 | 数値、または数値に解決される式。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 を返す
- 底 2 の $pow を逆算する
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$log2 はいつ使いますか?
A二分探索、二分木の深さ、ビット幅の見積もりなどです。
Q$log2(1024) はいくつですか?
A10 です。2 の 10 乗は 1024 だからです。
Q$log2 と $pow の関係は?
A互いに逆です。$pow: [2, x] は 2 の x 乗を計算し、$log2 で元に戻ります。