$add (加算)
最終更新:2026-10-09
$add (加算)
$add は集計式の中で加算を行います。複数の数値を足し合わせたり、日付にミリ秒数を加えたり、日付とミリ秒から新しい日付を返したりできます。$project、$addFields、$set で、価格に税を加えた合計などの算出によく使われます。引数は 2 要素以上の配列で渡します。いずれかの引数が null または欠落していると、式全体が null を返します。2 つの日付のミリ秒差を求めるには、$subtract を使います。
| カテゴリ | 数学 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $add: [ <expression1>, <expression2>, ... ] }
⚙️ パラメータ
| オペランド | 数値、日付、またはそれらに解決される式。少なくとも2つ。 |
|---|
戻り値:数値の合計。日付にミリ秒を加算すると日付を返します
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $add: 税込み合計を計算
db.orders.aggregate([
{ $project: {
total: { $add: ['$price', '$tax'] }
} }
])
出力:
{ '_id': 1, 'total': 110 }
{ '_id': 2, 'total': 55 }
📌 注意事項
- 1 つの引数でも null・欠落だと式全体が null になる($ifNull で保護)
- 日付 + ミリ秒は日付を返す。ミリ秒を日に換算するには 86400000 で割る
- $sum($group で使うアキュムレータ)とは違い、$add は通常の式
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$add と $sum の違いは?
A$sum は $group 内でドキュメント横断の合計を出すアキュムレータです。$add は配列内の値を足す汎用の式です。
Q$add で日付に日数を加算できますか?
A直接はできません。数値はミリ秒として扱われます。先に 86400000 を掛けるか、明確さのために $dateAdd の day 単位を使います。
Q$add が null に遭遇するとどうなりますか?
Aいずれかの引数が null または欠落なら結果は null になります。デフォルトが必要な場合は $ifNull で包んでください。