AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

$mul(更新演算子)

$mul

フィールドの値に数値を掛けます。$mul 式を指定するには、次のプロトタイプを使用します。

{ $mul: { <field1>: <number1>, ... } }

更新するフィールドには数値が含まれている必要があります。

<field> を埋め込みドキュメントまたは配列で指定するには、ドット表記を使用します。

MongoDB5.0 以降、mongod $mulなどの更新演算子を空のオペランド式()と併用しても、{ } でエラーが発生しなくなりました。空の更新を使用すると変更は一切されず、 oplogエントリも作成されません(操作は実行されません)。

MongoDB 5.0 以降、更新演算子では名前が文字列ベースのドキュメントフィールドを辞書順に処理します。数値名のフィールドは、数値順に処理されます。詳細については、「更新演算子の動作」を参照してください。

フィールドがドキュメントに存在しない場合、 はフィールドを作成し、乗数と同じ数値型の値を 0$mul に設定します。

$mul は、1 つのドキュメント内のアトミック操作です。

混在数値型(32ビット整数、64ビット整数、Double、Decimal128)の値の乗算では、数値型の変換が発生する可能性があります。混合数値型の値の乗算では、次の型変換規則が適用されます。

データ型
32ビット整数
64 ビット整数
Double
Decimal128

32ビット整数

32 ビットまたは 64 ビット整数

64 ビット整数

Double

Decimal128

64 ビット整数

64 ビット整数

64 ビット整数

Double

Decimal128

Double

Double

Double

Double

Decimal128

Decimal128

Decimal128

Decimal128

Decimal128

Decimal128

注意

  • 2 つの 32 ビット整数の積が 32 ビット整数の最大値を超える場合、結果は 64 ビット整数になります。

  • 64 ビット整数の最大値を超える任意の型の整数演算ではエラーが発生します。

products コレクションを次のように作成します。

db.products.insertOne(
{ "_id" : 1, "item" : "Hats", "price" : Decimal128("10.99"), "quantity" : 25 }
)

次の操作では、db.collection.updateOne() はドキュメントをアップデートします。$mul price演算子は、 フィールドに1.25 を乗算し、quantity フィールドに を乗算します。2

db.products.updateOne(
{ _id: 1 },
{ $mul:
{
price: Decimal128( "1.25" ),
quantity: 2
}
}
)

更新された文書の内容:

  • price は元の値 10.99 に 1.25 を掛けた値です

  • quantity は元の値 25 に 2 を掛けた値です

{ _id: 1, item: 'Hats', price: Decimal128("13.7375"), quantity: 50 }

次のドキュメントを products コレクションに追加します。

db.products.insertOne( { _id: 2, item: "Unknown" } )

次の操作では、 はドキュメントにないフィールドにdb.collection.updateOne() $mul演算子を適用しようとします。

db.products.updateOne(
{ _id: 2 },
{ $mul: { price: Decimal128("100") } }
)

db.collection.updateOne() 操作は次を実行します。

  • priceフィールドを挿入する

  • Decimal128("0") を設定する

{ "_id" : 2, "item" : "Unknown", "price" : Long(0) }

price フィールドの型は乗数と同じ Decimal128 です。

次のドキュメントを products コレクションに追加します。

db.products.insertOne( { _id: 3, item: "Scarf", price: Decimal128("10") } )

次の操作では、 はdb.collection.updateOne() $mul演算子を使用して、price フィールドのDecimal128 (10 )の値に Int32 (5 )を乗算します。

db.products.updateOne(
{ _id: 3 },
{ $mul: { price: Int32(5) } }
)

この操作の結果、次のドキュメントが作成されます。

{ _id: 3, item: 'Scarf', price: Decimal128("50") }

フィールドの値はprice Decimal128 型です。詳細については、 乗算型変換規則 を参照してください。

このページを評価

項目一覧