MongoDB में किसी स्ट्रिंग फील्ड की लंबाई विशेष मान से अधिक वाले डॉक्यूमेंट खोजने के लिए $where ऑपरेटर का उपयोग करें।
सिंटैक्स
db.yourCollectionName.find({$where: 'this.yourStringFieldName.length > yourIntegerValue'}).pretty();
उदाहरण से समझें
एक कलेक्शन बनाकर डॉक्यूमेंट इन्सर्ट करते हैं:
> db.stringFieldLengthDemo.insertOne({"UserId": 1, "UserName": "Adam Smith"});
> db.stringFieldLengthDemo.insertOne({"UserId": 2, "UserName": "Carol Taylor"});
> db.stringFieldLengthDemo.insertOne({"UserId": 3, "UserName": "James Brown"});
> db.stringFieldLengthDemo.insertOne({"UserId": 4, "UserName": "John Smith"});
> db.stringFieldLengthDemo.insertOne({"UserId": 5, "UserName": "David Miller"});
> db.stringFieldLengthDemo.insertOne({"UserId": 6, "UserName": "John Williams"});
> db.stringFieldLengthDemo.insertOne({"UserId": 7, "UserName": "Chris Evans"});
सभी डॉक्यूमेंट देखने के लिए:
> db.stringFieldLengthDemo.find().pretty();
आउटपुट:
{ "_id": ..., "UserId": 1, "UserName": "Adam Smith" }
{ "_id": ..., "UserId": 2, "UserName": "Carol Taylor" }
{ "_id": ..., "UserId": 3, "UserName": "James Brown" }
{ "_id": ..., "UserId": 4, "UserName": "John Smith" }
{ "_id": ..., "UserId": 5, "UserName": "David Miller" }
{ "_id": ..., "UserId": 6, "UserName": "John Williams" }
{ "_id": ..., "UserId": 7, "UserName": "Chris Evans" }
अब लंबाई 11 से अधिक वाले नाम खोजें:
> db.stringFieldLengthDemo.find({$where: 'this.UserName.length > 11'}).pretty();
आउटपुट:
चेतावनी:
$whereजावास्क्रिप्ट इंजन का उपयोग करता है और धीमा होता है। बड़े कलेक्शन के लिए स्ट्रिंग लंबाई को अलग फील्ड में स्टोर करके इंडेक्स करना बेहतर है।