$Set, $AddToSet, $Push
$set
$set
মানে হচ্ছে কোন কিছুর মান সেট করা। আমাদের ডাটাবেজে যদি কোন কিছুর আপডেট করতে হয় তাহলে আমরা এই অপারেটর ব্যাবহার করি। কিভাবে আমরা আমাদের ডাটাকে আপডেট করতে পারি সেটার উদাহরণ দেওয়া যাক:
db.products.insertOne({
_id: 100,
quantity: 250,
instock: true,
details: { model: "14QQ", make: "Clothes Corp" },
ratings: [{ by: "Customer007", rating: 4 }],
tags: ["apparel", "clothing"],
});
-
products
কালেকশনে আমরা একটা ডাটা আমাদের ডাটাবেজে এড করে নিলাম।
কিভাবে আমরা আপডেট করতে পারি
db.products.updateOne(
{ _id: 100 },
{
$set: {
quantity: 500,
details: { model: "2600", make: "Fashionaires" },
},
}
);
$AddToSet
$set
অপারেটর এর একটা অসুবিধা আছে, যেমন আপনাকে যদি বলা হয় যে tags
প্রপার্টি টা আপডেট করতে তাহলেই বিপত্তি বেজে যাবে। চলুন দেখা যাক:
db.products.updateOne(
{ _id: 100 },
{
$set: {
tags: "accessories",
},
}
);
আপনি যদি এভাবে ব্যাবহার করেন তাহলে আগের tags
অ্যারের মান পুরোটাই রেপ্লেস হয়ে শুধু tags: "clothing"
হয়ে যাবে। কিন্তু আমরা চাচ্ছি যে আগের আইটেমগুলোও থাকবে। তাহলে আমরা এই সমস্যা সমাধানের জন্য আরেকটা অপারেটর ব্যাবহার করতে পারি, সেটা হলো $addToSet
:
db.products.updateOne(
{ _id: 100 },
{
$addToSet: {
tags: "accessories",
},
}
);
আপনি যদি এভাবে এড করেন তাহলে সুন্দরভাবে নতুন করে এড হয়ে যাবে। আর যদি এই ভ্যালুটা অলরেডি থেকে থাকে তাহলে আর মডিফাই হবে না। আর আপনি যদি চান আপনার ডুপ্লিকেট এলিমেন্ট লাগবে, সেক্ষেত্রে $push
ব্যাবহার করতে পারেন।
$push
$push
অপারেটর ব্যাবহার করে আমরা কোনো অ্যারের মধ্যে নতুন আইটেম যোগ করতে পারি। এই অপারেটরটি অ্যারের শেষে নতুন আইটেম যোগ করে এবং ডুপ্লিকেট ভ্যালু রাখার ক্ষেত্রেও কার্যকর। উদাহরণস্বরূপ, আমরা যদি ratings
অ্যারের মধ্যে নতুন রেটিং যোগ করতে চাই, তাহলে আমরা $push
ব্যাবহার করতে পারি:
db.products.updateOne(
{ _id: 100 },
{
$push: {
ratings: { by: "Customer008", rating: 5 },
},
}
);
- উপরের কোডটিতে,
_id: 100
ডকুমেন্টেরratings
অ্যারের মধ্যে{ by: "Customer008", rating: 5 }
নতুন একটি রেটিং যোগ করা হয়েছে।
এইভাবে $push
অপারেটর ব্যবহার করে অ্যারে আপডেট করতে পারি।
Top comments (0)