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

MongoDB-এ JSON ডেটার ইনার ভ্যালু (Inner Value) পাওয়ার পদ্ধতি

MongoDB-এ নেস্টেড JSON ডকুমেন্টের ভেতরের মান (inner value) এক্সেস করতে find() মেথডে ডট (.) নোটেশন ব্যবহার করা সবচেয়ে সহজ পদ্ধতি।

কলেকশন এবং ডকুমেন্ট তৈরি

> db.demo235.insertOne({
...   "id": 101,
...   "details": [
...     { "Name": "Chris Brown", "Age": 21 },
...     { "Name": "David Miller", "Age": 24 }
...   ],
...   "otherdetails": [
...     { "Score": 56, "Subject": "MongoDB" },
...     { "Score": 78, "Subject": "MySQL" }
...   ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e418d22f4cebbeaebec514b") }

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

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

আউটপুট:

{ "_id" : ObjectId("5e418d22f4cebbeaebec514b"), "id" : 101, "details" : [ { "Name" : "Chris Brown", "Age" : 21 }, { "Name" : "David Miller", "Age" : 24 } ], "otherdetails" : [ { "Score" : 56, "Subject" : "MongoDB" }, { "Score" : 78, "Subject" : "MySQL" } ] }

JSON ডেটার ইনার ভ্যালু পাওয়ার কোয়ারী

find()-এর প্রজেকশন আর্গুমেন্টে ডট নোটেশন "otherdetails.Subject" ব্যবহার করা হয়েছে:

> db.demo235.find({}, {"otherdetails.Subject": 1, _id: 0});

ফলাফল

{ "otherdetails" : [ { "Subject" : "MongoDB" }, { "Subject" : "MySQL" } ] }

ব্যাখ্যা:

  • {} - ফিল্টার (সব ডকুমেন্ট)
  • {"otherdetails.Subject": 1, _id: 0} - প্রজেকশন: otherdetails অ্যারেতে প্রতিটি এলিমেন্টের Subject ফিল্ডই রাখবে, _id বাদ দেবে
  • MongoDB অটোমেটিক্যালি অ্যারেতে প্রতিটি এলিমেন্টে Subject এক্সট্রাক্ট করে

আরও ডট নোটেশন উদাহরণ:

  • "details.Name" - details অ্যারেতে সব Name
  • "details.0.Name" - details অ্যারের প্রথম এলিমেন্টের Name
  • "details.Age" - details অ্যারেতে সব Age

গভীর নেস্টেড এক্সেস (৩+ লেভেল):

db.collection.find({}, {"level1.level2.level3.field": 1})

অ্যাগ্রিগেশন বিকল্প (আরও কন্ট্রোলের জন্য):

db.demo235.aggregate([
  { $unwind: "$otherdetails" },
  { $project: { _id: 0, Subject: "$otherdetails.Subject" } }
])
// ফলাফল: { "Subject" : "MongoDB" }, { "Subject" : "MySQL" } (ফ্ল্যাট)

সতর্কতা: ডট নোটেশন প্রজেকশন অ্যারে স্ট্রাকচার রক্ষা করে। ফ্ল্যাট আউটপুট চাইলে $unwind ব্যবহার করুন।

  1. MongoDB-এ $unwind ব্যবহার করে কাউন্ট বের করা

  2. MongoDB-এ skip() এবং limit() ব্যবহার করে ডকুমেন্ট বাদ দেওয়া

  3. MongoDB-এ দুটি তারিখের মাঝপথে ও নির্দিষ্ট ফিল্ড মান দিয়ে ডেটা গ্রুপ করে সম ও কাউন্ট বের করা

  4. MySQL-এ একাধিক ফিল্ডের ন্যূনতম মান বের করুন