$multiply (乗算)
最終更新:2026-10-09
$multiply (乗算)
$multiply は集計式で複数の数値の積を計算します。引数は 2 要素以上の配列で渡します。$project、$addFields、$set で、明細合計(単価×数量)や通貨換算などの計算によく使われます。いずれかの引数が null または欠落していると式全体が null を返し、文字列や日付はエラーになります。$add と同様に、これはアキュムレータではなく通常の式です。グループ化されたドキュメント横断の累積積は $push と $reduce が必要です。
| カテゴリ | 数学 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $multiply: [ <expression1>, <expression2>, ... ] }
⚙️ パラメータ
| 因数 | 数値、または数値に解決される式。少なくとも2つ。 |
|---|
戻り値:すべての引数の積
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $multiply: 価格と数量から小計を計算
db.orders.aggregate([
{ $project: {
subtotal: { $multiply: ['$price', '$quantity'] }
} }
])
出力:
{ '_id': 1, 'subtotal': 250 }
{ '_id': 2, 'subtotal': 72 }
📌 注意事項
- 引数は数値でなければならず、文字列や日付はエラーになる
- いずれかの引数が null・欠落だと null になる
- ドキュメント横断の掛け算は $multiply の役割ではない。$group と $reduce を使う
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$multiply で文字列や日付を掛けられますか?
Aいいえ。数値以外の型はエラーになります。先に $toDouble や $toInt で変換してください。
Q$multiply と $sum の違いは?
A$sum は行を合計する $group アキュムレータです。$multiply は配列内の値を掛け合わせる式です。
Qドキュメント横断で値を掛け合わせるには?
A$group 内で $push を使って値を集め、$reduce で段階的に掛け合わせます。