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

MongoDB-এ এম্বেডেড লিস্ট (Embedded List) থেকে নির্দিষ্ট মানের চেয়ে বড় মানগুলো বের করা


MongoDB-এ নেস্টেড অ্যারে-র ফিল্ডে $gt (Greater Than) কোয়েরি ব্যবহার

MongoDB-এ একটি ডকুমেন্টের ভেতরে নেস্টেড অ্যারে (Embedded List) থাকলে, সেটির ভেতরের ফিল্ডে রেঞ্জ বা তুলনামূলক কোয়েরি (যেমন $gt, $lt) করার জন্য ডট (.) নোটেশন ব্যবহার করা হয়।

১. কালেকশন ও নমুনা ডেটা তৈরি

> db.demo317.insertOne({
  'id':101,
  'details':[{'Score':78, Name:"Chris"}, {'Score':88, Name:"David"}]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50e69cf8647eb59e562060") }
> db.demo317.insertOne({
  'id':102,
  'details':[{'Score':90, Name:"Chris"}, {'Score':91, Name:"David"}]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e50e6adf8647eb59e562061") }

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

> db.demo317.find();

আউটপুট:

{ "_id" : ObjectId("5e50e69cf8647eb59e562060"), "id" : 101, "details" : [ { "Score" : 78, "Name" : "Chris" }, { "Score" : 88, "Name" : "David" } ] }
{ "_id" : ObjectId("5e50e6adf8647eb59e562061"), "id" : 102, "details" : [ { "Score" : 90, "Name" : "Chris" }, { "Score" : 91, "Name" : "David" } ] }

৩. $gt ব্যবহার করে Score 89-এর চেয়ে বড় রেকর্ড খোঁজা

> db.demo317.find({"details.Score" :{ "$gt" : 89 }});

ব্যাখ্যা: details.Score ডট নোটেশন ব্যবহার করে নেস্টেড অ্যারে-র Score ফিল্ডে অ্যাক্সেস করা হয়েছে। MongoDB অটোমেটিক্যালি অ্যারে-র প্রতিটি এলিমেন্ট চেক করে।

৪. ফলাফল

{ "_id" : ObjectId("5e50e6adf8647eb59e562061"), "id" : 102, "details" : [ { "Score" : 90, "Name" : "Chris" }, { "Score" : 91, "Name" : "David" } ] }

শুধু id: 102 वाले ডকুমেন্ট ফেরত এসেছে, কারণ এর details অ্যারে-র দুটি এলিমেন্টই Score 89-এর চেয়ে বড় (90 এবং 91)। প্রথম ডকুমেন্টের স্কোর 78 এবং 88 হওয়ায় এটি ফলাফলে আসেনি।


  1. MongoDB-তে distinct() ব্যবহার করে ইউনিক ভ্যালু বের করা

  2. MongoDB-তে $elemMatch ব্যবহার করে অ্যারে ভ্যালু অনুযায়ী ডকুমেন্ট ফিল্টার করা

  3. MongoDB-এ ডকুমেন্ট থেকে নির্দিষ্ট ভ্যালু ফিল্টার করা ($filter)

  4. MySQL-এ FIND_IN_SET() + REPLACE() দিয়ে সেমিকোলন-সেপারেটেড লিস্ট থেকে মান খুঁজে বের করা