কেস-ইনসেনসিটিভ স্ট্রিং কম্পারিজন: $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() কোয়েরিতে সরাসরি নয়।