MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

Mongodb क्वेरी टेक्स्ट फ़ील्ड के साथ कंपाउंड इंडेक्स पर उपसर्ग का उपयोग नहीं करती है

सामान्य तौर पर MongoDB प्रश्नों का समर्थन करने के लिए अनुक्रमणिका उपसर्गों का उपयोग कर सकता है, हालांकि भू-स्थानिक या पाठ फ़ील्ड सहित मिश्रित अनुक्रमणिका विरल मिश्रित अनुक्रमणिका . यदि किसी दस्तावेज़ में कंपाउंड इंडेक्स में किसी भी टेक्स्ट इंडेक्स फ़ील्ड के लिए कोई मान शामिल नहीं है, तो इसे इंडेक्स में शामिल नहीं किया जाएगा।

सुनिश्चित करने के लिए सही परिणाम ए> उपसर्ग खोज के लिए, विरल यौगिक अनुक्रमणिका पर एक वैकल्पिक क्वेरी योजना का चयन किया जाएगा:

संभावित समस्या को प्रदर्शित करने के लिए MongoDB 3.4.5 में कुछ परीक्षण डेटा सेट करना:

db.myCollection.createIndex({ user_id:1, name: 'text' }, { name: 'myIndex'})

// `name` is a string; this document will be included in a text index
db.myCollection.insert({ user_id:123, name:'Banana' })

// `name` is a number; this document will NOT be included in a text index
db.myCollection.insert({ user_id:123, name: 456 })

// `name` is missing; this document will NOT be included in a text index
db.myCollection.insert({ user_id:123 })

फिर, मिश्रित पाठ अनुक्रमणिका का उपयोग करने के लिए बाध्य करना:

db.myCollection.find({user_id:123}).hint('myIndex')

परिणाम में केवल अनुक्रमित टेक्स्ट फ़ील्ड वाला एकल दस्तावेज़ शामिल होता है name , अपेक्षित तीन दस्तावेज़ों के बजाय:

{
  "_id": ObjectId("595ab19e799060aee88cb035"),
  "user_id": 123,
  "name": "Banana"
}

MongoDB दस्तावेज़ीकरण में इस अपवाद को अधिक स्पष्ट रूप से हाइलाइट किया जाना चाहिए; watch/upvote DOCS-10322 अपडेट के लिए MongoDB इश्यू ट्रैकर में।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. $एकत्रीकरण ढांचे में किसी वस्तु को खोलना

  2. MongoDB नेस्टेड डेटा द्वारा दस्तावेज़ों को छाँटना

  3. MongoDB bind_ip तब तक काम नहीं करेगा जब तक कि 0.0.0.0 पर सेट न हो जाए

  4. नेवला डुप्लीकेट कुंजी त्रुटि upsert के साथ

  5. MongoDB से Node.Js में JSON ट्री बनाएं