$Set, $AddToSet, $Push in MongoDB

RMAG news

$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 অপারেটর ব্যবহার করে অ্যারে আপডেট করতে পারি।