DEV Community

Cover image for $Set, $AddToSet, $Push in MongoDB
KAWSAR KABIR
KAWSAR KABIR

Posted on

$Set, $AddToSet, $Push in MongoDB

$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"],
});
Enter fullscreen mode Exit fullscreen mode
  • products কালেকশনে আমরা একটা ডাটা আমাদের ডাটাবেজে এড করে নিলাম।

কিভাবে আমরা আপডেট করতে পারি

db.products.updateOne(
  { _id: 100 },
  {
    $set: {
      quantity: 500,
      details: { model: "2600", make: "Fashionaires" },
    },
  }
);
Enter fullscreen mode Exit fullscreen mode

$AddToSet

$set অপারেটর এর একটা অসুবিধা আছে, যেমন আপনাকে যদি বলা হয় যে tags প্রপার্টি টা আপডেট করতে তাহলেই বিপত্তি বেজে যাবে। চলুন দেখা যাক:

db.products.updateOne(
  { _id: 100 },
  {
    $set: {
      tags: "accessories",
    },
  }
);
Enter fullscreen mode Exit fullscreen mode

আপনি যদি এভাবে ব্যাবহার করেন তাহলে আগের tags অ্যারের মান পুরোটাই রেপ্লেস হয়ে শুধু tags: "clothing" হয়ে যাবে। কিন্তু আমরা চাচ্ছি যে আগের আইটেমগুলোও থাকবে। তাহলে আমরা এই সমস্যা সমাধানের জন্য আরেকটা অপারেটর ব্যাবহার করতে পারি, সেটা হলো $addToSet:

db.products.updateOne(
  { _id: 100 },
  {
    $addToSet: {
      tags: "accessories",
    },
  }
);
Enter fullscreen mode Exit fullscreen mode

আপনি যদি এভাবে এড করেন তাহলে সুন্দরভাবে নতুন করে এড হয়ে যাবে। আর যদি এই ভ্যালুটা অলরেডি থেকে থাকে তাহলে আর মডিফাই হবে না। আর আপনি যদি চান আপনার ডুপ্লিকেট এলিমেন্ট লাগবে, সেক্ষেত্রে $push ব্যাবহার করতে পারেন।

$push

$push অপারেটর ব্যাবহার করে আমরা কোনো অ্যারের মধ্যে নতুন আইটেম যোগ করতে পারি। এই অপারেটরটি অ্যারের শেষে নতুন আইটেম যোগ করে এবং ডুপ্লিকেট ভ্যালু রাখার ক্ষেত্রেও কার্যকর। উদাহরণস্বরূপ, আমরা যদি ratings অ্যারের মধ্যে নতুন রেটিং যোগ করতে চাই, তাহলে আমরা $push ব্যাবহার করতে পারি:

db.products.updateOne(
  { _id: 100 },
  {
    $push: {
      ratings: { by: "Customer008", rating: 5 },
    },
  }
);
Enter fullscreen mode Exit fullscreen mode
  • উপরের কোডটিতে, _id: 100 ডকুমেন্টের ratings অ্যারের মধ্যে { by: "Customer008", rating: 5 } নতুন একটি রেটিং যোগ করা হয়েছে।

এইভাবে $push অপারেটর ব্যবহার করে অ্যারে আপডেট করতে পারি।

Top comments (0)