$divide (除算)
最終更新:2026-10-09
$divide (除算)
$divide は 2 つの引数(被除数と除数)で除算を行います。単価、一人当たりの値、比率などの計算によく使われ、たとえば 2 つの $sum 結果を割って比率を求めます。特筆すべき点として、0 で割ってもエラーにならず null を返します(多くのプログラミング言語と異なります)。いずれかの引数が null または欠落でも null になります。$divide は整数、double、Decimal を受け付け、結果は通常 double になります。
| カテゴリ | 数学 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $divide: [ <expression1>, <expression2> ] }
⚙️ パラメータ
| 被除数 | 数値、または数値に解決される式。 |
|---|---|
| 除数 | 分母の式。除数が 0 の場合、結果は null になります。 |
戻り値:2つの数値の商。除数が 0 の場合は null
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $divide: 商品ごとの平均価格を計算
db.orders.aggregate([
{ $project: {
avgPrice: { $divide: ['$total', '$quantity'] }
} }
])
出力:
{ '_id': 1, 'avgPrice': 25 }
{ '_id': 2, 'avgPrice': 9 }
📌 注意事項
- 除数が 0 でも例外は出ず null を返す
- 整数の除算でも結果は double になる。丸めが必要なら $round や $trunc と組み合わせる
- いずれかの引数が null・欠落だと null になる
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$divide は 0 で割るとエラーになりますか?
Aいいえ。null を返します。デフォルトが必要なら $ifNull を使います。
Q整数の除算はどの型を返しますか?
A結果は double です。5 を 2 で割ると切り捨てではなく 2.5 になります。
Q2 つの $sum 結果から比率を得るには?
A$group で両方の合計を計算したら、$project でそのまま $divide に渡します。