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

उन दस्तावेज़ों को कैसे वापस करें जहाँ दो फ़ील्ड का मान समान है

यहां आपके पास दो विकल्प हैं। पहला है $where का इस्तेमाल करना ऑपरेटर।

Collection.find( { $where: "this.start === this.end" } )

दूसरा विकल्प एग्रीगेशन फ्रेमवर्क और $redact ऑपरेटर।

Collection.aggregate([
    { "$redact": { 
        "$cond": [
            { "$eq": [ "$start", "$end" ] },
            "$$KEEP",
            "$$PRUNE"
        ]
    }}
])

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

$redact जैसे $where इंडेक्स का उपयोग नहीं करता है और यहां तक ​​कि एक संग्रह स्कैन भी नहीं करता है, लेकिन जब आप $redact करते हैं तो आपकी क्वेरी के प्रदर्शन में सुधार होता है क्योंकि यह एक मानक MongoDB ऑपरेटर है। कहा जा रहा है कि एकत्रीकरण विकल्प कहीं बेहतर है क्योंकि आप हमेशा $match ऑपरेटर का उपयोग करके अपने दस्तावेज़ को फ़िल्टर कर सकते हैं।

$where यहाँ ठीक है लेकिन टाला जा सकता है। साथ ही मेरा मानना ​​है कि आपको केवल $where . की आवश्यकता है जब आपको स्कीमा डिज़ाइन की समस्या हो। उदाहरण के लिए इंडेक्स वाले दस्तावेज़ में एक और बूलियन फ़ील्ड जोड़ना यहां एक अच्छा विकल्प हो सकता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब में मेल खाने वाले उप दस्तावेज़ की थोक अद्यतन सरणी

  2. MongoDB एकत्रीकरण ढांचे में शून्य से विभाजन को कैसे संभालें

  3. मोंगोडब एकत्रीकरण का उपयोग करके कई क्षेत्रों की विशिष्ट गणना

  4. MONGODB में CSV में डेटा को विभाजित और गिनते समय कोई समस्या है (कॉलमनाम जैसे कॉलम में शून्य मान होने पर :)

  5. पथ '_id' पर एक अद्यतन करने से अपरिवर्तनीय क्षेत्र '_id' संशोधित हो जाएगा