অ্যারে অবজেক্টে নির্দिष्ट আইডি দিয়ে ট্যাগ আপডেট
MongoDB-এ একটি ডকুমেন্টের অ্যারে ফিল্ডে থাকা অবজেক্টের নির্দিষ্ট আইডি খুঁজে সেটির অন্য ফিল্ড আপডেট করতে পজিশনাল $ অপারেটর ব্যবহার করা হয়।
নমুনা ডেটা তৈরি
> db.demo713.insertOne({
tags: [
{ id: 101, Name: "Tag-1" },
{ id: 102, Name: "Tag-3" },
{ id: 103, Name: "Tag-3" }
]
})
সমস্ত ডকুমেন্ট দেখানো
> db.demo713.find()
আউটপুট:
{ "_id": ObjectId("..."), "tags": [{ "id": 101, "Name": "Tag-1" }, { "id": 102, "Name": "Tag-3" }, { "id": 103, "Name": "Tag-3" }] }
ট্যাগ আপডেট করার কোয়েরি (id: 102 -> Name: "Tag-2")
> db.demo713.update(
{ "tags.id": 102 },
{ $set: { "tags.$.Name": "Tag-2" } },
false, true
)
ফলাফল:
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
আপডেট後の ডকুমেন্ট
> db.demo713.find().pretty()
আউটপুট:
{ "_id": ObjectId("..."), "tags": [{ "id": 101, "Name": "Tag-1" }, { "id": 102, "Name": "Tag-2" }, { "id": 103, "Name": "Tag-3" }] }
ব্যাখ্যা
{ "tags.id": 102 }: অ্যারেtagsএর মধ্যেid: 102থাকা এলিমেন্ট খুঁজেtags.$.Name: পজিশনাল$দিয়ে সেই ম্যাচ করা এলিমেন্টেরNameআপডেট করেupdate(query, update, upsert, multi): পুরনো সিনট্যাক্স (upsert=false, multi=true)- আধুনিক সিনট্যাক্স:
db.demo713.updateOne({ "tags.id": 102 }, { $set: { "tags.$.Name": "Tag-2" } }) - যদি একাধিক এলিমেন্টে id: 102 থাকে, তবে শুধু প্রথমটিই আপডেট হবে