Docs Menu
Docs Home
/
MongoDBマニュアル
/ / / /

$mul

項目一覧

  • 定義
  • 動作
$mul

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

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

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

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

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

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

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

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

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

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

注意

  • 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" : NumberLong(0) }

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

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

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

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

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

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

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

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

Tip

以下も参照してください。

戻る

$max

項目一覧