$mul (乗算)
最終更新:2026-10-09
$mul (乗算)
$mul は、フィールドの値を指定した係数で乗算します。`{ $mul: { price: 0.9 } }` で 10% 引きになり、`{ $mul: { quantity: 2 } }` で 2 倍になります。フィールドが存在しない場合は 0 倍として扱われるため、0 で作成されます。数値以外のフィールドはエラーになります。価格や重さのスケーリングに便利なアトミックな演算です。
| カテゴリ | フィールド更新 |
|---|---|
| MongoDB バージョン | 2.6+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $mul: { <field>: <factor> } }
⚙️ パラメータ
| フィールド | 乗算する数値フィールド。 |
|---|---|
| 倍数 | 乗数。小数や負の値も指定できます。 |
戻り値:更新結果
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $mul: 価格を 10% 引きにする
// 100 が 90 になる
db.products.updateOne(
{ _id: 1 },
{ $mul: { price: 0.9 } }
)
// 数量を 2 倍にする
db.products.updateOne(
{ _id: 2 },
{ $mul: { qty: 2 } }
)
出力:
// price は 0.9 倍、qty は 2 倍になる。存在しないフィールドは 0 で作成される
📌 注意事項
- フィールドがなければ 0 として作成される(0 倍のセマンティクス)
- 数値以外のフィールドはエラーになる
- $inc と同様にアトミックな操作
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$mul の対象フィールドが存在しない場合は?
A0 倍として扱われ、フィールドが 0 で作成されます。
Q$mul は浮動小数点数を扱えますか?
Aはい。精度は BSON の型に依存します。
Q$mul と $inc の違いは?
A$inc は加算・減算、$mul は乗算・除算を行います。