रेगेक्स ($regex) का उपयोग करके स्ट्रिंग लंबाई फ़िल्टर करना
MongoDB में स्ट्रिंग लंबाई ऑपरेटर नहीं है, लेकिन रेगेक्स ^.{min,max}$ का उपयोग करके लंबाई सीमा के आधार पर फ़िल्टर कर सकते हैं।
सिंटैक्स
db.yourCollectionName.find({ 'yourFieldName': { $regex: /^.{yourLengthValue1,yourLengthValue2}$/ } });
उदाहरण: नमूना डेटा
> db.queryLengthDemo.insertOne({"StudentFullName":"John Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01ae353decbc2fc927c0") }
> db.queryLengthDemo.insertOne({"StudentFullName":"John Doe"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01b4353decbc2fc927c1") }
> db.queryLengthDemo.insertOne({"StudentFullName":"David Miller"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01c2353decbc2fc927c2") }
> db.queryLengthDemo.insertOne({"StudentFullName":"Robert Taylor"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01e2353decbc2fc927c3") }
> db.queryLengthDemo.insertOne({"StudentFullName":"Chris Williams"});
{ "acknowledged" : true, "insertedId" : ObjectId("5c9a01f1353decbc2fc927c4") }
लंबाई 9 से 12 के बीच वाले नाम खोजना
> db.queryLengthDemo.find({ StudentFullName: { $regex: /^.{9,12}$/ } }).pretty();
आउटपुट:
रेगेक्स व्याख्या:
^स्ट्रिंग की शुरुआत।.{9,12}किसी भी वर्ण के 9 से 12 घटनाएं।$स्ट्रिंग का अंत।
प्रदर्शन चेतावनी: लीडिंग एंकर (^) के साथ रेगेक्स इंडेक्स का उपयोग कर सकता है, लेकिन ट्रेलिंग $ और लंबाई क्वांटिफायर बड़े संग्रह पर धीमे हो सकते हैं। बेहतर प्रदर्शन के लिए, लंबाई को अलग फ़ील्ड में स्टोर करें और उस पर इंडेक्स बनाएं।