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

$elemmatch MongoDB में काम नहीं कर रहा है

इसे पहले के संस्करणों में बिल्कुल भी काम नहीं करना चाहिए था, क्योंकि कम से कम आपने इस के दायरे को संशोधित किया है। अब "डेटा" को शीर्ष स्तर के तत्व के रूप में देखें। संक्षेप में, अब इसकी अनुमति नहीं है और आपको वास्तव में जावास्क्रिप्ट विधियों का उपयोग नहीं करना चाहिए जब तक कि आपको बिल्कुल नहीं करना चाहिए। फिर भी, ज्यादातर मामलों में शायद अभी भी एक बेहतर तरीका है।

लेकिन वास्तव में यह जावास्क्रिप्ट मिलान का एक गैर-जरूरी उपयोग है क्योंकि इसकी आवश्यकता नहीं होती है जब अन्य ऑपरेटर मौजूद होते हैं जो ऐसा करेंगे।

आपको एक $regex इसके बजाय फ़ॉर्म:

db.docs.find({ "data.First_name": /^kim/i })

या फ़ील्ड के भीतर कहीं भी, कैरेट ^ को हटा दें :

db.docs.find({ "data.First_name": /kim/i })

जो कि जावास्क्रिप्ट निष्पादन के रूप में काफी अक्षम है लेकिन उतना नहीं जितना उस दुभाषिया इंजन के माध्यम से प्रसंस्करण का ऊपरी भाग नहीं है। और निश्चित रूप से यह हर जगह काम करता है।

यह भी सोचें कि हल करने के लिए JavaScript पर निर्भर क्वेरी वास्तव में क्या कर रही है:

  • एक जावास्क्रिप्ट दुभाषिया उदाहरण आमंत्रित करता है
  • प्रति दस्तावेज़ BSON दस्तावेज़ प्रकारों को JavaScript प्रकारों में कनवर्ट करता है
  • प्रति दस्तावेज़ दुभाषिया में JavaScript कोड का मूल्यांकन करता है
  • जावास्क्रिप्ट को कास्ट करता है true|false प्रति दस्तावेज़ के परिणामस्वरूप वापस

इसे ध्यान में रखते हुए $regex (लेकिन एक केस असंवेदनशील मैच के साथ जो इष्टतम नहीं है) एक ही ऑपरेशन कर रहा है, लेकिन "पीसीआरई" सी लाइब्रेरी का उपयोग बिना रूपांतरण और प्रति दस्तावेज़ रीकास्टिंग के मूल रूप से कर रहा है, तो यह स्पष्ट रूप से दोनों की समझदार पसंद है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. एकाधिक $regex $ का उपयोग कर और MongoDB में

  2. दस्तावेज़ डेटाबेस में विरासत?

  3. मोंगो / नेवला एकत्रीकरण - $redact और $cond मुद्दे

  4. दो संग्रहों पर एक मोंगो अंतर की तुलना करें

  5. ASP.Net MVC में MongoDB कनेक्शन प्रबंधित करने का सही तरीका क्या है?