MongoDB में टेक्स्ट इंडेक्स और रेगेक्स का उपयोग करके टेक्स्ट खोज को ऑप्टिमाइज़ करना
बड़े टेक्स्ट फील्ड पर तेज़ खोज के लिए MongoDB में इंडेक्स बनाए जा सकते हैं। प्रीफिक्स रेगेक्स खोज (/^pattern/) इंडेक्स का लाभ उठा सकती है।
उदाहरण: इंडेक्स बनाना और दस्तावेज़ डालना
> db.demo46.createIndex({"Name":1});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.demo46.insertOne({"Name":"John Smith"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e267004cfb11e5c34d898ed") }
> db.demo46.insertOne({"Name":"John Doe"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e267009cfb11e5c34d898ee") }
> db.demo46.insertOne({"Name":"Chris Brown"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e267011cfb11e5c34d898ef") }
सभी दस्तावेज़ देखना
> db.demo46.find();
आउटपुट:
{ "_id" : ObjectId("5e267004cfb11e5c34d898ed"), "Name" : "John Smith" }
{ "_id" : ObjectId("5e267009cfb11e5c34d898ee"), "Name" : "John Doe" }
{ "_id" : ObjectId("5e267011cfb11e5c34d898ef"), "Name" : "Chris Brown" }
प्रीफिक्स रेगेक्स खोज (इंडेक्स का उपयोग करता है)
> db.demo46.find({ Name: { $regex:/^John/}});
आउटपुट:
{ "_id" : ObjectId("5e267009cfb11e5c34d898ee"), "Name" : "John Doe" }
{ "_id" : ObjectId("5e267004cfb11e5c34d898ed"), "Name" : "John Smith" }
महत्वपूर्ण बिंदु:
/^John/(एंकर के साथ प्रीफिक्स) इंडेक्स का उपयोग कर सकता है/John/(सबस्ट्रिंग) या/John$/(सफ़िक्स) इंडेक्स का उपयोग नहीं कर सकते- पूर्ण टेक्स्ट खोज के लिए टेक्स्ट इंडेक्स बनाएं:
db.collection.createIndex({field: "text"}) - टेक्स्ट इंडेक्स के साथ
$textऑपरेटर का उपयोग करें:db.collection.find({$text: {$search: "term"}})
सुझाव: बड़े टेक्स्ट फील्ड के लिए टेक्स्ट इंडेक्स अधिक उपयुक्त है, जबकि प्रीफिक्स मिलान के लिए सामान्य इंडेक्स + रेगेक्स पर्याप्त है।