Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
データベース マニュアル
/ / / /

$mul

$mul

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

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

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

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

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

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

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

$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 型です。詳細については、乗算型変換規則を参照してください。

Tip

戻る

$max

項目一覧