MongoDB-এ একটি ফিল্ডের মান নির্দিষ্ট প্যাটার্ন (যেমন "13" দিয়ে শুরু) দিয়ে ম্যাচ করে ডকুমেন্ট কাউন্ট করার জন্য count() (লিগেসি) বা countDocuments() মেথড সাথে $regex অপারেটর ব্যবহার করা হয়।
উদাহরণ: কালেকশন ও ডেটা তৈরি
> db.demo570.insertOne({ Information: { Value: "13675" } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e90959b39cfeaaf0b97b583") }
> db.demo570.insertOne({ Information: { Value: "14135" } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e9095a739cfeaaf0b97b584") }
> db.demo570.insertOne({ Information: { Value: "15113" } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e9095b639cfeaaf0b97b585") }
> db.demo570.insertOne({ Information: { Value: "13141" } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e9095c139cfeaaf0b97b586") }
সব ডকুমেন্ট দেখানো
> db.demo570.find();
আউটপুট:
{ "_id" : ObjectId("5e90959b39cfeaaf0b97b583"), "Information" : { "Value" : "13675" } }
{ "_id" : ObjectId("5e9095a739cfeaaf0b97b584"), "Information" : { "Value" : "14135" } }
{ "_id" : ObjectId("5e9095b639cfeaaf0b97b585"), "Information" : { "Value" : "15113" } }
{ "_id" : ObjectId("5e9095c139cfeaaf0b97b586"), "Information" : { "Value" : "13141" } }
Regex দিয়ে "13" দিয়ে শুরু হওয়া মান কাউন্ট করা
> db.demo570.count({ 'Information.Value': { '$regex': '^13' } });
আউটপুট:
2
"13675" এবং "13141" — এই দুটি "13" দিয়ে শুরু হয়েছে।
আধুনিক সিনট্যাক্স (MongoDB 4.0+)
count() ডিপ্রিকেটেড। নতুন মেথডগুলো:
db.collection.countDocuments({ query })— কুয়েরি ম্যাচ করা ডকুমেন্ট কাউন্ট করে (সঠিক কাউন্ট)۔db.collection.estimatedDocumentCount()— কুয়েরি ছাড়া অনুমানিক কাউন্ট (দ্রুত, মেটাডেটা থেকে)۔
> db.demo570.countDocuments({ 'Information.Value': { $regex: '^13' } });
পারফরম্যান্স টিপস
- Prefix Regex (^pattern) ইন্ডেক্স ব্যবহার করতে পারে (যদি সিঙ্গেল-ফিল্ড ইন্ডেক্স থাকে)।
- Case-insensitive (/i) ইন্ডেক্স ব্যবহার করতে পারে না (সাধারণত)۔
- Collation ব্যবহার করে কেস-ইনসেনসিটিভ ইন্ডেক্স তৈরি করা যায়।
- বড় ডেটাসেটে
countDocuments()ধীর হতে পারে;estimatedDocumentCount()দ্রুত কিন্তু অ্যাকুরেট নয়।
মূল পয়েন্টসমূহ
$regex: '^13'— "13" দিয়ে শুরু হওয়া স্ট্রিং ম্যাচ করে।countDocuments()ব্যবহার করুন (নতুন ভার্সনে)۔- ইন্ডেক্স:
db.demo570.createIndex({ "Information.Value": 1 })দিয়েRegex পারফরম্যান্স বাড়াতে পারেন (prefix regex-এর জন্য)۔