2015-10-15 5 views
8

मैं सूत्रों का कहना है कि MongoDB के findOne()find().limit(1) तुलना में बहुत धीमी है, लेकिन फिर मैं भी अन्यथा सुना है पढ़ा है। वास्तव में वर्तमान सत्य क्या है?तेज़ क्या है: 'मोंडोडीबी/मोंगोस में'()। सीमा (1) `या` findOne() `ढूंढें?

Article from March 2013: "यह खोजने के लिए काफी तेज़ है() + सीमा() क्योंकि findOne() हमेशा पढ़ेगा + यदि दस्तावेज़ मौजूद है तो दस्तावेज़ वापस लौटाएं। ढूंढें() बस एक कर्सर (या नहीं) देता है और केवल पढ़ता है डेटा अगर आप कर्सर के माध्यम से पुनरावृत्त करते हैं। "

SE answer from 2011:।।। "खोज() सीमा (1) दस्तावेज़ लिया गया है, परिमाण गति अंतर का आदेश गायब करने लगता है, तो इसके अलावा, मैं MongoDB जावास्क्रिप्ट ड्राइवर के साथ प्रमुख गति अंतर पुन: पेश नहीं कर सका मैं मूल रूप से बेंचमार्क MongoDB जावा ड्राइवर का उपयोग कर। "

मुझे उम्मीद है कि जो भी जवाब है, यह मोंगोस के find().sort().limit(1) और findOne() का उपयोग करने के साथ भी संगत है।

उत्तर

13

दोनों समान रूप से तेजी से कर रहे हैं।

जब आप find().limit(1) करना कोई क्वेरी सर्वर को भेज रहा है। आप सिर्फ क्वेरी क्लाइंट पक्ष तैयार करते हैं। जब तक आप किसी दस्तावेज़ को पुनर्प्राप्त नहीं करते हैं तब भी आप कर्सर को संशोधित कर सकते हैं, इस प्रकार क्वेरी (उदाहरण के लिए sort जोड़कर)।

तो अगर आप बेंचमार्क केवल find().limit(1) आप इसे, बहुत तेजी से है, क्योंकि क्वेरी निष्पादित नहीं है मिल जाएगा। तर्कसंगत रूप से आप बेकार कोड बेंचमार्क कर रहे हैं।

संबंधित मुद्दे