$log (対数)
最終更新:2026-10-09
$log (対数)
$log は、指定した底で数値の対数を返します。引数は値と底の 2 つです。$ln、$log10、$log2 と違い、底を第 2 引数で与えるため、$log: [8, 2] は 3 を返します。任意の底の対数が必要な場合をカバーします。値と底はどちらも 0 より大きく、底は 1 であってはなりません。いずれかの引数が null または欠落していると null を返します。底がちょうど 10 や 2 の場合は、明確さのために $log10 や $log2 を使うのがよいでしょう。
| カテゴリ | 数学 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $log: [ <value>, <base> ] }
⚙️ パラメータ
| 数値 | 対数を取る正の数値式。 |
|---|---|
| 底 | 対数の底。0 より大きく、1 でない必要があります。 |
戻り値:指定された底による対数。引数が無効、null、または欠落している場合は null
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $log: 底2の対数
db.sales.aggregate([
{ $project: {
log2x: { $log: ['$amount', 2] }
} }
])
出力:
{ '_id': 1, 'log2x': 6.643856189774724 }
{ '_id': 2, 'log2x': 4.321928094887363 }
📌 注意事項
- 値と底はどちらも 0 より大きく、底は 1 にできない
- 底が 10 と 2 の場合は $log10 と $log2 の方が読みやすい
- 無効・欠落した引数は例外ではなく null を返す
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$log の底はどう指定しますか?
A第 2 引数が底です。$log: [8, 2] は 3 を返します。
Q$log の底は 1 にできますか?
Aできません。底が 1 だと対数が未定義になり null を返します。
Q$log と $ln の違いは?
A$log は底を設定できますが、$ln は底が e に固定されています。