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

MongoDB-এ $where দিয়ে দুটি ফিল্ড তুলনা করা (JavaScript এক্সপ্রেশন)

MongoDB-এ $where অপারেটর ব্যবহার করে জাভাস্ক্রিপ্ট এক্সপ্রেশন দিয়ে ফিল্ড তুলনা

$where অপারেটর দিয়ে জাভাস্ক্রিপ্ট এক্সপ্রেশন লিখে কোয়ারি করা যায়। এটি ফ্লেক্সিবল কিন্তু ধীর কারণ প্রতিটি ডকুমেন্টে জাভাস্ক্রিপ্ট エンজিন চালাতে হয়। দুটি ফিল্ডের মান তুলনা (কেস-ইনসেনসিটিভ) করার জন্য এটি ব্যবহার করা হয়েছে।

উদাহরণ: ডেটা ইনসার্ট

> db.demo7.insertOne({"FirstName1":"JOHN","FirstName2":"John"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0ccd1a25ddae1f53b6222f") }
> db.demo7.insertOne({"FirstName1":"Carol","FirstName2":"Mike"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0ccd2725ddae1f53b62230") }
> db.demo7.insertOne({"FirstName1":"bob","FirstName2":"BOB"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e0ccd3225ddae1f53b62231") }

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

> db.demo7.find();

আউটপুট:

{ "_id" : ObjectId("5e0ccd1a25ddae1f53b6222f"), "FirstName1" : "JOHN", "FirstName2" : "John" }
{ "_id" : ObjectId("5e0ccd2725ddae1f53b62230"), "FirstName1" : "Carol", "FirstName2" : "Mike" }
{ "_id" : ObjectId("5e0ccd3225ddae1f53b62231"), "FirstName1" : "bob", "FirstName2" : "BOB" }

$where কোয়ারি (FirstName1 ও FirstName2 কেস-ইনসেনসিটিভভাবে সমান)

> db.demo7.find({$where: "this.FirstName1.toLowerCase() == this.FirstName2.toLowerCase()"});

আউটপুট:

{ "_id" : ObjectId("5e0ccd1a25ddae1f53b6222f"), "FirstName1" : "JOHN", "FirstName2" : "John" }
{ "_id" : ObjectId("5e0ccd3225ddae1f53b62231"), "FirstName1" : "bob", "FirstName2" : "BOB" }

ব্যাখ্যা

  • this.FirstName1.toLowerCase() == this.FirstName2.toLowerCase() — জাভাস্ক্রিপ্ট এক্সপ্রেশন। this বর্তমান ডকুমেন্টকে বোঝায়।
  • JOHN==John (true), bob==BOB (true), Carol==Mike (false)।
  • পারফরম্যান্স সতর্কতা: $where কোয়ারি ইন্ডেক্স ব্যবহার করে না, কালেকশন স্ক্যান করে। বড় ডেটাসেটে এড়ান।

বিকল্প (MongoDB 4.2+): $expr ও $eq, $toLower অগ্রিগেশন এক্সপ্রেশন ব্যবহার করুন — এটি ইন্ডেক্স ব্যবহার করতে পারে এবং দ্রুত: find({$expr: {$eq: [{$toLower: "$FirstName1"}, {$toLower: "$FirstName2"}]}})।

  1. MongoDB-এ দুই লেভেল গভীর রেকর্ড খুঁজে বের করা

  2. MongoDB-এ ডকুমেন্টের ফিল্ড এক্সেস করা (find() মেথড)

  3. MongoDB-তে $group-এ সর্ট করে প্রথম দুটি ফিল্ড বের করা ($first + $$ROOT)

  4. C#-এ দুটি টাপল তুলনা করা (Compare Tuples)