MongoDBには$mul
があります 値に特定の量を掛けることができるフィールド更新演算子。
フィールドがまだ存在しない場合は、フィールドが作成され、その値はゼロ(0
)に設定されます。 )乗数と同じ数値タイプを使用します。
例
次のドキュメントを含むコレクションがあるとします。
{ "_id" : 1, "bar" : 10 }
$mul
を使用できます update()
と組み合わせた演算子 bar
をインクリメントするメソッド フィールド。
このように:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 2 } }
)
出力:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
これは、1つのドキュメントが一致して変更されたことを示しています。
コレクションをもう一度確認しましょう:
db.foo.find()
結果:
{ "_id" : 1, "bar" : 20 }
金額が2倍の20になっていることがわかります。
存在しないフィールドを乗算する
$mul
を使用する場合 ドキュメントに存在しないフィールドでは、フィールドが追加され、ゼロに設定されます(0
)乗数と同じ数値タイプを使用します。
例:
db.foo.update(
{ _id: 1 },
{ $mul: { bar: 3, extra: 2 } }
)
出力:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
2つのフィールドを更新したことに注意してください。 bar
フィールドとextra
フィールド(元々は存在しませんでした)。
ドキュメントをもう一度確認しましょう:
db.foo.find()
結果:
{ "_id" : 1, "bar" : 60, "extra" : 0 }
bar
フィールドに3
が掛けられました 、および新しいextra
フィールドが追加され、0
に設定されました 。
混合タイプ
混合数値型(32ビット整数、64ビット整数、float)の値を乗算すると、数値型が変換される場合があります。
説明については、MongoDBのドキュメントを参照してください。