Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB में बड़े टेक्स्ट फील्ड को इंडेक्स करके क्वेरी तेज करना

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"}})

सुझाव: बड़े टेक्स्ट फील्ड के लिए टेक्स्ट इंडेक्स अधिक उपयुक्त है, जबकि प्रीफिक्स मिलान के लिए सामान्य इंडेक्स + रेगेक्स पर्याप्त है।

  1. - MongoDB में "टॉगल" क्वेरी कैसे करें?

    MongoDB में बूलियन फील्ड को टॉगल (फ्लिप) करना MongoDB में बूलियन फील्ड की वैल्यू को टॉगल (true ↔ false) करने के लिए डॉक्यूमेंट खोजें, फिर $set के साथ नॉट (!) ऑपरेटर का उपयोग करें। उदाहरण: कलेक्शन और डॉक्यूमेंट्स बनाना > db.toggleDemo.insertOne({CustomerName:John Smith,CustomerAge:28,isMarried:tr

  1. - MongoDB क्वेरी: यदि एक फ़ील्ड नल है तो दूसरी फ़ील्ड चुनें

    $ifNull ऑपरेटर से फॉलबैक वैल्यू प्रदान करें MongoDB एग्रीगेशन में $ifNull ऑपरेटर का उपयोग करके: यदि पहली एक्सप्रेशन नल या गायब है, तो दूसरी एक्सप्रेशन की वैल्यू लौटाएं। उदाहरण: संग्रह बनाना > db.demo182.insertOne({FirstName: Chris, LastName: null}); { acknowledged: true, insertedId: ObjectId(5e3

  1. MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें MongoDB क्वेरी: आईडी को सरणी फ़ील्ड मान से बाहर कैसे करें

    इसके लिए $not के साथ $in ऑपरेटर का उपयोग करें। आइए एक संग्रह बनाते हैं: [ { id: 101, subjectid: [ 102 ] }, { id: 102, subjectid: [ 102 ] } ] सभी दस्तावेज़ देखने के लिए: db.collection.find() आउटपुट: [ { _id: ObjectId(5a934e000102030405000000),