2012-08-09 14 views
13

में कर्सर.count() और कर्सर.size() के बीच अंतर cursor.count() और cursor.size() मोंगोडीबी के DBCursor के तरीकों के बीच क्या अंतर है?MongoDB

उत्तर

29

Javadoc of the MongoDB Java Driver से, यह कहते हैं:

DBCursor.count(): क्वेरी से मेल खाने की वस्तुओं की संख्या गिनता है। यह पर विचार/सीमा को ध्यान में रखें।

DBCursor.size(): क्वेरी से मेल खाने वाली वस्तुओं की संख्या की गणना करता है। यह विचार/सीमा को ध्यान में रखता है।

+0

दोनों समान दिखते हैं ... फिर भी उन्होंने दो ऐसे तरीकों को क्यों पेश किया है? क्या दोनों के बीच कोई प्रदर्शन अंतर है? – Byter

+0

वे समान नहीं हैं। कोई सीमा लेता है/विचार में छोड़ देता है लेकिन अन्य नहीं। –

+13

मुझे संदेह है कि अंतर 'नहीं लेता' में है और 'ले लेता है' सीमा/विचाराधीन है। –

1

एक उत्तर से अधिक मैं एक मुद्दा इंगित करना चाहता हूं कि हमारी टीम को इन दोनों को "मिश्रण" का सामना करना पड़ा।

DBCursor cursor = collection.find(query).limit(batchSize); 

logger.info("{} items found.", cursor.count()); 

while (cursor.hasNext()) { 
... 
} 

यह पता चला कि cursor.count() विधि बुला के बाद, सीमा नजरअंदाज कर दिया गया (तो कृपया this अन्य सवाल पर एक नज़र डालें), हम जानते हैं कि कितने का इरादा:

हम कुछ इस तरह था आइटम को क्वेरी द्वारा वापस कर दिया गया था, इसलिए हमें cursor.size() विधि को कॉल करना चाहिए था, क्योंकि count पर कॉल करने के बाद किसी के पास अवांछित संपार्श्विक प्रभाव पड़ा था।

मुझे आशा है कि यह किसी और के लिए सहायक हो सकता है क्योंकि हम जिस मुद्दे का सामना कर रहे थे उसका स्रोत ढूंढना इतना आसान नहीं था।

+0

क्या आप कह रहे हैं कि 'कर्सर.count()' ने दस्तावेज के रूप में केवल सीमा को नजरअंदाज नहीं किया है, बल्कि वास्तव में कर्सर से सीमा को हटा दिया है, जैसे कर्सर को पुन: चालू करने जैसे बाद के संचालन व्यवहार की तरह निर्धारित नहीं होते हैं? –