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

MongoDB में लौटाए गए दस्तावेज़ों को सीमित करने के 2 तरीके

जब आप MongoDB में क्वेरी चलाते हैं, तो आपके पास लौटाए गए दस्तावेज़ों को सीमित करने का विकल्प होता है। यह वह जगह है जहां आप ऑपरेशन द्वारा लौटाए जाने वाले दस्तावेजों की अधिकतम संख्या निर्दिष्ट करते हैं।

उदाहरण के लिए, यदि कोई ऑपरेशन सामान्य रूप से 2,000 दस्तावेज़ लौटाएगा, लेकिन आप 1,000 की सीमा निर्दिष्ट करते हैं, तो केवल 1,000 दस्तावेज़ ही वापस किए जाते हैं। हालांकि, अगर ऑपरेशन केवल 500 दस्तावेज़ लौटाएगा, तो सभी 500 वापस कर दिए जाएंगे (क्योंकि वे 1,000 दस्तावेज़ सीमा का उल्लंघन नहीं करते हैं)।

यह कुछ हद तक TOP . का उपयोग करने जैसा है SQL सर्वर में क्लॉज, या LIMIT MySQL, MariaDB, PostgreSQL, और SQLite में क्लॉज।

लौटाए गए दस्तावेज़ों को सीमित करने से आवश्यकता से अधिक दस्तावेज़ों को वापस किए जाने और संसाधित होने से रोककर प्रदर्शन को बेहतर बनाने में मदद मिल सकती है।

MongoDB में, हम cursor.limit() . का उपयोग कर सकते हैं विधि या $limit लौटाए गए दस्तावेज़ों को सीमित करने के लिए एकत्रीकरण ऑपरेटर।

cursor.limit() विधि

मान लीजिए हमारे पास pets . नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

हम limit() . का उपयोग कर सकते हैं इस संग्रह को क्वेरी करते समय लौटाए गए दस्तावेज़ों की संख्या को सीमित करने की विधि।

उदाहरण:

db.pets.find().limit(3)

परिणाम:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }

$limit एग्रीगेशन ऑपरेटर

एकत्रीकरण पाइपलाइन का उपयोग करते समय, आप $limit . का उपयोग कर सकते हैं पाइपलाइन में अगले चरण में पारित परिणामों को सीमित करने के लिए एकत्रीकरण ऑपरेटर।

उदाहरण:

db.pets.aggregate([
    {
      $match: { }
    },
     { 
      $limit : 3
    }
])

उदाहरण:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }

आमतौर पर, $match ऑपरेटर में एक खाली दस्तावेज़ शामिल नहीं होगा जैसा कि हमें यहाँ मिला है। इसमें आम तौर पर एक क्वेरी शामिल होती है जिसके साथ पाइपलाइन के उस हिस्से में परिणामों को फ़िल्टर करना होता है। लेकिन इस मामले में मैंने उदाहरण का अनुसरण करना आसान बनाने के लिए एक खाली दस्तावेज़ का उपयोग किया।

यह देखते हुए कि मैंने पहले चरण में एक खाली दस्तावेज़ पारित किया है, मैं बस यह कर सकता था:

db.pets.aggregate([
     { 
      $limit : 3
    }
])

किसी भी तरह से, परिणाम केवल 3 दस्तावेज़ों तक सीमित था।

जब एकत्रीकरण पाइपलाइन में उपयोग किया जाता है, तो $limit ऑपरेटर कहीं पाइपलाइन के बीच में हो सकता है। यदि ऐसा है, तो यह सीमित दस्तावेज़ों को अगले चरण में भेजता है।

मेरा मतलब समझाने के लिए यहां एक उदाहरण दिया गया है।

db.pets.aggregate([
    {
      $match: { }
    },
     { 
      $limit : 3
    },
    {
      $match: { "type": "Cat" }
    }
])

परिणाम:

{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }

केवल एक बिल्ली सीमित परिणामों में थी (भले ही मूल दस्तावेज़ में दो बिल्लियाँ हैं) इसलिए केवल उस बिल्ली का मिलान तीसरे चरण में किया गया था।

यह निम्न करने के लिए अलग है।

db.pets.aggregate([
    {
      $match: { "type": "Cat" }
    },
     { 
      $limit : 3
    }
])

परिणाम:

{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }

इस मामले में, हमने मूल दस्तावेज़ में बिल्लियों की खोज की, फिर परिणामों को केवल 3 तक सीमित कर दिया। यह देखते हुए कि केवल 2 बिल्लियाँ हैं, $limit परिणाम पर कोई प्रभाव नहीं पड़ा।

सॉर्ट किए गए दस्तावेज़ों को सीमित करना

यदि आप दस्तावेज़ों को छाँटने के बाद परिणामों को सीमित करते हैं, तो सीमा छँटाई को ध्यान में रखेगी।

उदाहरण:

db.pets.aggregate([
    {
      $sort: { "_id": -1 }
    },
     { 
      $limit : 3
    }
])

परिणाम:

{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }

इस मामले में, मैंने सभी दस्तावेज़ों को उनके _id . द्वारा क्रमबद्ध किया है अवरोही क्रम में फ़ील्ड (-1 अवरोही क्रम निर्दिष्ट करता है)।

यहाँ यह फिर से आरोही क्रम में है (1 . का मान) आरोही क्रम निर्दिष्ट करता है):

db.pets.aggregate([
    {
      $sort: { "_id": 1 }
    },
     { 
      $limit : 3
    }
])

परिणाम:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }

स्पष्ट रूप से सॉर्ट किए जाने के बाद परिणामों को सीमित करते समय, सुनिश्चित करें कि सॉर्ट ऑपरेशन एक स्थिर सॉर्ट का उपयोग करता है।

एक स्थिर प्रकार वह है जो हर बार निष्पादित होने पर उसी क्रम को लौटाता है। एक अस्थिर प्रकार दूसरी ओर, वह है जो कई बार प्रदर्शन करने पर एक अलग क्रम को वापस कर सकता है।

यह सुनिश्चित करने के लिए कि आप एक स्थिर प्रकार का प्रदर्शन कर रहे हैं, अपने प्रकार में कम से कम एक फ़ील्ड शामिल करें जिसमें अनन्य रूप से अद्वितीय मान हों (उदाहरण के लिए, _id फ़ील्ड)।

अधिक जानकारी

अधिक जानकारी के लिए, इसके लिए MongoDB दस्तावेज़ देखें:

  • cursor.limit()
  • $limit (एकत्रीकरण)

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में एकाधिक संग्रह खोजें

  2. Mongoimport का उपयोग करके MongoDB में CSV डेटा को एक सरणी के रूप में आयात करें

  3. एकत्रीकरण ढांचे का उपयोग करके MongoDB के साथ समूह गणना

  4. मैं नेवला में किसी ऑब्जेक्ट को सहेजने के बाद ऑब्जेक्ट आईडी कैसे प्राप्त करूं?

  5. मुझे रिलेशनल डेटाबेस के बजाय NoSQL डेटाबेस का उपयोग कब करना चाहिए? क्या एक ही साइट पर दोनों का उपयोग करना ठीक है?