$subtract (減算)

最終更新:2026-10-09

$subtract (減算)

$subtract は集計式の中で減算を行います。$add の対になる演算子です。引数はちょうど 2 つで、数値−数値は差、日付−日付はミリ秒、日付−ミリ秒はより前の日付を返します。$project や $set で、割引後の価格や 2 つのタイムスタンプの経過時間などの差を求めるのに使われます。$add と違って $subtract は 2 引数のみを受け付け、複数のオペランドは扱えません。いずれかの引数が null または欠落していると null を返します。

カテゴリ数学
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $subtract: [ <expression1>, <expression2> ] }

⚙️ パラメータ

被減数数値、日付、またはそのいずれかに解決される式。
減数被減数から引く数値(ミリ秒)または日付式。

戻り値:数値の差。日付から日付を引くとミリ秒、日付からミリ秒を引くと日付を返します

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $subtract: 割引後の価格を計算
db.orders.aggregate([
  { $project: {
      finalPrice: { $subtract: ['$price', '$discount'] }
  } }
])

出力:

{ '_id': 1, 'finalPrice': 90 }
{ '_id': 2, 'finalPrice': 45 }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q$subtract で 2 つの日付の日数差を計算できますか?
Aミリ秒で返されるので、日に換算するには 86400000 で割るか、$dateDiff の day 単位を使います。
Q$subtract と $add の関係は?
A互いに逆の関係です。$subtract は 2 引数、$add は複数引数を受け付けます。
Q日付からミリ秒を引くとどうなりますか?
Aより前の日付になります。たとえば注文日から 86400000 を引くと前日になります。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%