collation ফিচার MongoDB ৩.৪ ভার্সনে যোগ হয়েছিল। আপনি যদি পুরনো ভার্সনে (৩.৪ এর আগে) কোলেশন ব্যবহার করার চেষ্টা করেন, তবে collation is not a function ত্রুটি দেখা দেবে।
ভার্সন যাচাই
> db.version()
4.0.5
এই উদাহরণে MongoDB ৪.০.৫ ব্যবহার করা হয়েছে, যা কোলেশন সাপোর্ট করে।
নমুনা কালেকশন ও ইন্ডেক্স তৈরি
> db.collationExample.createIndex(
{ Value: 1 },
{ collation: { locale: "en", strength: 1 } }
);
{ "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }
> db.collationExample.insertOne({ 'Value': 'x' });
{ "acknowledged": true, "insertedId": ObjectId("5e038a3cf5e889d7a51994f5") }
> db.collationExample.insertOne({ 'Value': 'X' });
{ "acknowledged": true, "insertedId": ObjectId("5e038a48f5e889d7a51994f6") }
> db.collationExample.insertOne({ 'Value': 'Y' });
{ "acknowledged": true, "insertedId": ObjectId("5e038a49f5e889d7a51994f7") }
> db.collationExample.insertOne({ 'Value': 'a' });
{ "acknowledged": true, "insertedId": ObjectId("5e038a49f5e889d7a51994f8") }
> db.collationExample.insertOne({ 'Value': 'á' });
{ "acknowledged": true, "insertedId": ObjectId("5e038a4bf5e889d7a51994f9") }
সমস্ত ডকুমেন্ট প্রদর্শন
> db.collationExample.find().pretty();
আউটপুট:
{ "_id": ObjectId("5e038a3cf5e889d7a51994f5"), "Value": "x" }
{ "_id": ObjectId("5e038a48f5e889d7a51994f6"), "Value": "X" }
{ "_id": ObjectId("5e038a49f5e889d7a51994f7"), "Value": "Y" }
{ "_id": ObjectId("5e038a49f5e889d7a51994f8"), "Value": "a" }
{ "_id": ObjectId("5e038a4bf5e889d7a51994f9"), "Value": "á" }
কোলেশন ব্যবহার করে কোয়েরি
strength: 1 মানে শুধু বেস ক্যারেক্টার ম্যাচ (কেস এবং ডায়াক্রিটিক্স উপেক্ষা):
> db.collationExample.find({ Value: "a" } ).collation( { locale: "en", strength: 1 } );
ফলাফল
{ "_id": ObjectId("5e038a49f5e889d7a51994f8"), "Value": "a" }
{ "_id": ObjectId("5e038a4bf5e889d7a51994f9"), "Value": "á" }
ব্যাখ্যা: কোলেশন strength: 1 সেট করলে "a", "A", "á", "Á" সবই একসামান মনে হয়। Robomongo (Robo 3T) পুরনো ভার্সনে কোলেশন মেথড সাপোর্ট করে না। সমাধান: MongoDB এবং Robo 3T উভয়ই আপডেট করুন।
কোলেশন স্ট্র렝্থ লেভেল
- 1: বেস ক্যারেক্টার মাত্র (কেস/ডায়াক্রিটিক্স উপেক্ষা)
- 2: কেস সেনসিটিভ, ডায়াক্রিটিক্স উপেক্ষা
- 3: কেস এবং ডায়াক্রিটিক্স দুটোই সেনসিটিভ (ডিফল্ট)