更新演算子の使用
このステップでは、単なる値の変更にとどまらず、複雑なドキュメントの変更を行うことができる強力なMongoDBの更新演算子を探求します。
まず、使用するサンプルデータを作成しましょう。
db.products.insertMany([
{
name: "Laptop",
price: 1000,
tags: ["electronics", "computer"],
stock: 50
},
{
name: "Smartphone",
price: 800,
tags: ["electronics", "mobile"],
stock: 30
}
])
MongoDBは、いくつかの強力な更新演算子を提供しており、洗練された方法でドキュメントを変更することができます。
$mul
演算子 - 数値の乗算
db.products.updateOne(
{ name: "Laptop" },
{ $mul: { price: 1.1 } }
)
出力:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0,
upsertedId: null
}
$mul
演算子は、フィールドの値を指定された数で乗算します。この例では、ノートパソコンの価格を10%上げています。
$push
演算子 - 配列に要素を追加する
db.products.updateOne(
{ name: "Smartphone" },
{ $push: { tags: "sale" } }
)
出力:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0,
upsertedId: null
}
$push
演算子は、配列フィールドに要素を追加します。ここでは、スマートフォンのタグに「sale」タグを追加しています。
$min
および$max
演算子 - 比較に基づく更新
db.products.updateOne(
{ name: "Laptop" },
{
$min: { stock: 40 },
$max: { price: 1200 }
}
)
出力:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 1,
upsertedCount: 0,
upsertedId: null
}
$min
は、指定された値が既存の値より小さい場合にフィールドを更新します。
$max
は、指定された値が既存の値より大きい場合にフィールドを更新します。
更新を検証しましょう。
db.products.find()
[
{
_id: ObjectId('674683aebec38876f7c1c18e'),
name: 'Laptop',
price: 1200,
tags: [ 'electronics', 'computer' ],
stock: 40
},
{
_id: ObjectId('674683aebec38876f7c1c18f'),
name: 'Smartphone',
price: 800,
tags: [ 'electronics','mobile','sale' ],
stock: 30
}
]
更新された価格、タグ、在庫レベルが反映された変更されたドキュメントが表示されるはずです。