MongoDB-এ অ্যারে-র নির্দিষ্ট এলিমেন্ট আপডেট করার জন্য পজিশনাল $ অপারেটর
MongoDB-এ একটি অ্যারে-র ভেতরে নির্দিষ্ট শর্ত পূরণকারী এলিমেন্টটি আপডেট করতে পজিশনাল $ অপারেটর ব্যবহার করা হয়। এটি কোয়েরি-তে ম্যাচ করা এলিমেন্টের ইনডেক্সকে রিপ্রেজেন্ট করে।
১. কালেকশন ও জটিল নেস্টেড ডেটা তৈরি
> db.demo22.insertOne({
ProductId: 101,
ProductDetails: [
{ ProductFirstPrice: '35', ProductSecondPrice: '75' },
{ ProductFirstPrice: '', ProductSecondPrice: '' },
{ ProductFirstPrice: '78', ProductSecondPrice: '24' }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e14c0b422d07d3b95082e70") }
২. ডকুমেন্ট দেখানো
> db.demo22.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5e14c0b422d07d3b95082e70"),
"ProductId" : 101,
"ProductDetails" : [
{ "ProductFirstPrice" : "35", "ProductSecondPrice" : "75" },
{ "ProductFirstPrice" : "", "ProductSecondPrice" : "" },
{ "ProductFirstPrice" : "78", "ProductSecondPrice" : "24" }
]
}
৩. পজিশনাল $ অপারেটর দিয়ে আপডেট (ProductFirstPrice: "35" वाली এলিমেন্ট খালি করা)
> db.demo22.update(
{ "ProductDetails.ProductFirstPrice" : "35" },
{ $set : { "ProductDetails.$.ProductFirstPrice" : "" }},
false, true
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
ব্যাখ্যা:
- কোয়েরি:
ProductDetails.ProductFirstPrice: "35"- অ্যারে-তে এই ভ্যালুইتاحার প্রথম এলিমেন্ট খুঁজে বের করে। - আপডেট:
ProductDetails.$.ProductFirstPrice-$সMBOLটি ম্যাচ করা এলিমেন্টের পজিশন (ইনডেক্স ০) বোঝায়। false, true-upsert: false,multi: true(পুরনো সিনট্যাক্স)।
৪. আপডেটের পর ডকুমেন্ট
> db.demo22.find().pretty();
আউটপুট:
{
"_id" : ObjectId("5e14c0b422d07d3b95082e70"),
"ProductId" : 101,
"ProductDetails" : [
{ "ProductFirstPrice" : "", "ProductSecondPrice" : "75" },
{ "ProductFirstPrice" : "", "ProductSecondPrice" : "" },
{ "ProductFirstPrice" : "78", "ProductSecondPrice" : "24" }
]
}
প্রথম এলিমেন্টের ProductFirstPrice "35" থেকে খালি স্ট্রিং "" হয়ে গেছে। অন্য এলিমেন্টগুলো অপরিবর্তিত।