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

यदि कोई आइटम मौजूद है, तो परीक्षण करने के लिए MongoDB से कैसे पूछताछ करें?

चूंकि आपको गिनती की आवश्यकता नहीं है, इसलिए आपको यह सुनिश्चित करना चाहिए कि पहला मैच मिलने के बाद क्वेरी वापस आ जाएगी। चूंकि गिनती का प्रदर्शन आदर्श नहीं है, इसलिए यह महत्वपूर्ण है। निम्नलिखित क्वेरी को पूरा करना चाहिए:

db.Collection.find({ /* criteria */}).limit(1).size();

ध्यान दें कि find().count() डिफ़ॉल्ट रूप से नहीं है limit का सम्मान करें खंड और इसलिए अप्रत्याशित परिणाम लौटा सकता है (और सभी मैचों को खोजने का प्रयास करेगा)। size() या count(true) सीमा ध्वज का सम्मान करेंगे।

यदि आप चरम पर जाना चाहते हैं, तो आपको यह सुनिश्चित करना चाहिए कि आपकी क्वेरी कवर किए गए इंडेक्स का उपयोग करती है। कवर किए गए इंडेक्स केवल इंडेक्स तक पहुंचते हैं, लेकिन उनके लिए आवश्यक है कि जिस फ़ील्ड पर आप क्वेरी करते हैं वह अनुक्रमित हो। सामान्य तौर पर, ऐसा इसलिए करना चाहिए क्योंकि एक count() स्पष्ट रूप से कोई फ़ील्ड वापस नहीं करता है। फिर भी, कवर किए गए इंडेक्स को कभी-कभी वर्बोज़ कर्सर की आवश्यकता होती है:

db.values.find({"value" : 3553}, {"_id": 0, "value" : 1}).limit(1).explain();

{
  // ...
  "cursor" : "BtreeCursor value_1",
  "indexOnly" : true,  // covered!
}

दुर्भाग्य से, count() explain() . की पेशकश नहीं करता है , तो यह इसके लायक है या नहीं, कहना मुश्किल है। हमेशा की तरह, सिद्धांत की तुलना में माप एक बेहतर साथी है, लेकिन सिद्धांत आपको कम से कम बड़ी समस्याओं से बचा सकता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node.js . में स्व-हस्ताक्षरित प्रमाणपत्रों के साथ MongoDB SSL

  2. MongoDB में FindAndModify और अपडेट में क्या अंतर है?

  3. एक मोंगोडब कर्सर पर क्रमिक रूप से चलना (अगले दस्तावेज़ पर जाने से पहले कॉलबैक की प्रतीक्षा करना)

  4. MongoDB में डेटा वर्जनिंग को लागू करने के तरीके

  5. फ़ील्ड नाम के बिना मोंगोडब क्वेरी