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

MongoDB-এ স্ট্রিং তুলনা: $strcasecmp অপারেটর


কেস-ইনসেনসিটিভ স্ট্রিং কম্পারিজন: $strcasecmp

MongoDB-এ দুটি স্ট্রিং কেস-ইনসেনসিটিভভাবে তুলনা করতে অ্যাগ্রিগেশন পাইপলাইনে $strcasecmp অপারেটর ব্যবহার করা হয়।

ফলাফল মান

  • 1: প্রথম স্ট্রিং দ্বিতীয়টির চেয়ে "বড়" (লেক্সিকোগ্রাফিক্যালি)
  • 0: দুটি স্ট্রিং সমান (কেস উপেক্ষা করে)
  • -1: প্রথম স্ট্রিং দ্বিতীয়টির চেয়ে "ছোট"

নমুনা ডেটা তৈরি

> db.demo490.insertOne({ "Name1": "John", "Name2": "john" })
> db.demo490.insertOne({ "Name1": "David", "Name2": "Bob" })
> db.demo490.insertOne({ "Name1": "Carol", "Name2": "Carol" })

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

> db.demo490.find()

আউটপুট:

{ "_id": ObjectId("..."), "Name1": "John", "Name2": "john" }
{ "_id": ObjectId("..."), "Name1": "David", "Name2": "Bob" }
{ "_id": ObjectId("..."), "Name1": "Carol", "Name2": "Carol" }

স্ট্রিং কম্পারিজন কোয়েরি

> db.demo490.aggregate([
    { $project: {
        Name1: 1,
        Name2: 1,
        Result: { $strcasecmp: ["$Name1", "$Name2"] }
    }}
])

ফলাফল:

{ "_id": ObjectId("..."), "Name1": "John", "Name2": "john", "Result": 0 }
{ "_id": ObjectId("..."), "Name1": "David", "Name2": "Bob", "Result": 1 }
{ "_id": ObjectId("..."), "Name1": "Carol", "Name2": "Carol", "Result": 0 }

ব্যাখ্যা

  • John vs john: কেস-ইনসেনসিটিভ সমান, ফলাফল ০
  • David vs Bob: "D" > "B" (এস্কি/ইউনিকোড অর্ডার), ফলাফল ১
  • Carol vs Carol: সমান, ফলাফল ০
  • $project এ ফলাফল নতুন ফিল্ড Result এ সংরক্ষণ করা হয়েছে

ব্যবহার ক্ষেত্র

  • ডুপ্লিকেট ডিটেকশন (কেস ডিফারেন্স উপেক্ষা করে)
  • সোর্টিং/গ্রুপিংয়ের জন্য নরমালাইজড কম্পারিজন
  • সার্চ রিলেভ্যান্সি স্কোরিং

নোট: এটি শুধু অ্যাগ্রিগেশন পাইপলাইনে কাজ করে, find() কোয়েরিতে সরাসরি নয়।

  1. MongoDB-এ স্ট্রিং থেকে ইন্টিজার (int) কনভার্ট করা

  2. MongoDB-তে নির্দিষ্ট স্ট্রিং দিয়ে ডকুমেন্ট এক্সট্র্যাক্ট করা

  3. MongoDB-এ কাস্টম স্ট্রিং দিয়ে ObjectId তৈরি করা (_id ফিল্ড ব্যবহার)

  4. C++-এ কেস-ইনসেনসিটিভ স্ট্রিং কম্পারিজন