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

MongoDB-এ নেস্টেড JSON অবজেক্টের ডেটা মাত্র পাওয়ার পদ্ধতি

MongoDB-এ গভীর নেস্টেড (nested) JSON অবজেক্ট থেকে নির্দিষ্ট ডেটা মাত্র ফেচ করতে findOne() মেথডে প্রজেকশন এবং $elemMatch ব্যবহার করা হয়।

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

> db.demo109.insertOne({
...   "Name" : "Chris",
...   "Subjects" : [
...     {
...       "Id" : "100",
...       "Name": "MySQL",
...       "InstructorDetails" : [
...         { "Name" : "John" }
...       ]
...     },
...     {
...       "Id" : "101",
...       "Name": "MongoDB",
...       "InstructorDetails" : [
...         { "Name" : "Mike" }
...       ]
...     }
...   ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2ee7df9fd5fd66da21447a") }

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

>> db.demo109.find();

আউটপুট:

{ "_id" : ObjectId("5e2ee7df9fd5fd66da21447a"), "Name" : "Chris", "Subjects" : [ { "Id" : "100", "Name" : "MySQL", "InstructorDetails" : [ { "Name" : "John" } ] }, { "Id" : "101", "Name" : "MongoDB", "InstructorDetails" : [ { "Name" : "Mike" } ] } ] }

নেস্টেড JSON অবজেক্টের ডেটা মাত্র পাওয়ার কোয়ারী

findOne() মেথডে কোয়ারী, প্রজেকশন এবং কলব্যাক ফাংশন ব্যবহার করা হয়েছে:

> db.demo109.findOne(
...   { Name: "Chris" },
...   { 'Subjects': { $elemMatch: { 'Id': "100" } } },
...   function (err, doc) { console.log(doc) }
... );

ফলাফল

{ "_id" : ObjectId("5e2ee7df9fd5fd66da21447a"), "Subjects" : [ { "Id" : "100", "Name" : "MySQL", "InstructorDetails" : [ { "Name" : "John" } ] } ] }

ব্যাখ্যা:

  • প্রথম আর্গুমেন্ট: { Name: "Chris" } - ডকুমেন্ট ফিল্টার
  • দ্বিতীয় আর্গুমেন্ট: { 'Subjects': { $elemMatch: { 'Id': "100" } } } - প্রজেকশন, Subjects অ্যারেতে Id "100" মিলে যাওয়া এলিমেন্ট মাত্র রিটার্ন করবে
  • তৃতীয় আর্গুমেন্ট: কলব্যাক ফাংশন (MongoDB শেলে আউটপুট প্রিন্ট করার জন্য)

গুরুত্বপূর্ণ:

  • findOne() সবসময় একটি ডকুমেন্ট রিটার্ন করে (পहुँच পাওয়া প্রথমটি)
  • $elemMatch প্রজেকশনে ব্যবহার করলে অ্যারেতে শুধু প্রথম মিলে যাওয়া এলিমেন্ট রিটার্ন হয়
  • নেস্টেড লেভেল গভীর হলে এগ্রিগেশন পাইপলাইন ($unwind, $match, $project) ব্যবহার করুন আরও কন্ট্রোলের জন্য

অ্যাগ্রিগেশন বিকল্প (আধুনিক):

db.demo109.aggregate([
  { $match: { Name: "Chris" } },
  { $unwind: "$Subjects" },
  { $match: { "Subjects.Id": "100" } },
  { $project: { _id: 0, Subjects: 1 } }
])
  1. MongoDB-তে জাভাস্ক্রিপ্ট দিয়ে অ্যারে অবজেক্টকে কী-ভ্যালু অবজেক্টে রূপান্তর করা

  2. MongoDB-এ নেস্টেড ডকুমেন্ট থেকে শুধু কী (keys) বের করা

  3. জ্যাকসন অবজেক্ট মডেল দিয়ে JSON ডেটা ম্যাপিং

  4. জাভাস্ক্রিপ্টে অবজেক্টের মানগুলো কীভাবে পাবেন?