MongoDB में टेलेबल कर्सर हैं। , जो आपको सभी डेटा लौटाए जाने के बाद एक कर्सर का पुन:उपयोग करने की अनुमति देता है। यह कुछ इस तरह दिखेगा:
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()
ध्यान दें कि केवल 10 दस्तावेज़ पुनर्प्राप्त किए गए हैं, लेकिन यह निर्धारित करने के लिए कर्सर का निरीक्षण किया जा सकता है कि क्या और ऑब्जेक्ट उपलब्ध हैं। एकमात्र समस्या यह है कि टेलेबल कर्सर का उपयोग केवल कैप्ड संग्रह पर ही किया जा सकता है।
उपरोक्त का उपयोग नियमित कर्सर के साथ भी किया जा सकता है, लेकिन आपको n + 1
के लिए क्वेरी करनी होगी दस्तावेज। यह मूल रूप से वही समाधान है जिसका आप अभी उपयोग कर रहे हैं। आपको size()
. का उपयोग करना होगा हालांकि, यह स्किप और लिमिट मॉडिफायर को ध्यान में रखता है।
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n
मैं पायमोंगो से परिचित नहीं हूं, इसलिए मुझे यह निश्चित रूप से नहीं पता है, लेकिन एक संभावना है कि यह समाधान n + 1
भेजता है आवश्यक n
. के बजाय आपके आवेदन के लिए पूर्ण दस्तावेज़ , जिसके परिणामस्वरूप मामूली बैंडविड्थ ओवरहेड होता है। यदि ऐसा है, तो हो सकता है कि आप एक सर्वर-साइड फ़ंक्शन बनाना चाहें जो ऐसा ही करता हो, लेकिन केवल n
युक्त ऑब्जेक्ट देता है एक सरणी में दस्तावेज़, और एक ध्वज जो इंगित करता है कि क्या n + 1
दस्तावेज़ उपलब्ध है।