কম্পিউটার টিউটোরিয়াল

MongoDB-এ নেস্টেড ডকুমেন্ট থেকে প্রজেকশন দিয়ে একক ফিল্ড রিটার্ন করা

MongoDB-এ নেস্টেড ডকুমেন্ট থেকে নির্দিষ্ট ফিল্ড বাদ দিয়ে বাকিগুলো রিটার্ন করতে (বা শুধু নির্দিষ্ট ফিল্ড রিটার্ন করতে) find() মেথডের প্রজেকশন প্যারামিটারে ডট নোটেশন ব্যবহার করে ফিল্ড পথ নির্দিষ্ট করা হয়।

নমুনা কালেকশন তৈরি

> db.demo237.insertOne({
  _id: 101,
  Product: {
    description1: { id: 1001 },
    description2: { Name: "Product-1" },
    description3: { Price: 550 }
  }
});
{ "acknowledged": true, "insertedId": 101 }

ডকুমেন্ট দেখানো

> db.demo237.find().pretty();

আউটপুট:

{ 
  "_id": 101, 
  "Product": { 
    "description1": { "id": 1001 }, 
    "description2": { "Name": "Product-1" }, 
    "description3": { "Price": 550 } 
  } 
}

description1 এবং description3 বাদ দিয়ে বাকি রিটার্ন (এক্সক্লুশন)

> db.demo237.find({}, { "Product.description1": 0, "Product.description3": 0 });

ফলাফল

{ "_id": 101, "Product": { "description2": { "Name": "Product-1" } } }

ব্যাখ্যা:

  • 0 মান দিয়ে ফিল্ড এক্সক্লুড করা হয়।
  • Product.description1 এবং Product.description3 বাদ দেওয়া হয়েছে।
  • Product.description2 এবং _id (ডিফল্ট ইনক্লুড) রিটার্ন হয়েছে।

শুধু description2 রিটার্ন (ইনক্লুশন)

db.demo237.find({}, { "Product.description2": 1, _id: 0 });

ফলাফল: { "Product": { "description2": { "Name": "Product-1" } } }

গভীর নেস্টেড ফিল্ড প্রজেকশন

db.demo237.find({}, { "Product.description2.Name": 1, _id: 0 });

ফলাফল: { "Product": { "description2": { "Name": "Product-1" } } } (অবজেক্ট স্ট্রাকচার বজায় থাকে)।

সতর্কতা: ইনক্লুড/এক্সক্লুড মিক্স

_id বাদ দিয়ে আপনি একই ডকুমেন্টে ইনক্লুড (১) এবং এক্সক্লুড (০) মিক্স করতে পারবেন না। তবে নেস্টেড লেভেলে আলাদা ফিল্ডের জন্য আলাদা মোড ব্যবহার করা যায় (যেমন উপরের উদাহরণে)।

  1. MongoDB-তে ম্যাট্রিক্স মতো ডকুমেন্ট থেকে মান মুছে ফেলা

  2. MongoDB কালেকশন থেকে $eq মিলে ডকুমেন্ট মুছে ফেলা

  3. MongoDB-এ সাব-ডকুমেন্ট রিমুভ করা

  4. MongoDB-তে অ্যাগ্রিগেশন দিয়ে ডকুমেন্ট ফিল্ড থেকে বিয়োগ করা ($subtract)