जब हम बिना किसी प्रकार के आदेश के एक मानगो खोज () क्वेरी चलाते हैं, तो डेटाबेस परिणामों को क्रमबद्ध करने के लिए आंतरिक रूप से क्या उपयोग करता है?
मानगो वेबसाइट पर प्रलेखन के अनुसार :
जब कोई पैरामीटर के साथ एक खोज () निष्पादित करते हैं, तो डेटाबेस वस्तुओं को आगे के प्राकृतिक क्रम में वापस कर देता है।
मानक तालिकाओं के लिए, प्राकृतिक आदेश विशेष रूप से उपयोगी नहीं है, क्योंकि आदेश अक्सर प्रविष्टि क्रम के करीब है, यह होने की गारंटी नहीं है। हालांकि, कैप्ड कलेक्शंस के लिए, प्राकृतिक ऑर्डर को इंसर्शन ऑर्डर होने की गारंटी है। यह बहुत उपयोगी हो सकता है।
हालांकि मानक संग्रह (गैर कैप्ड संग्रह) के लिए, परिणाम को सॉर्ट करने के लिए किस फ़ील्ड का उपयोग किया जाता है? यह _id क्षेत्र या कुछ और है?
संपादित करें:
मूल रूप से, मुझे लगता है कि मैं जो पाने की कोशिश कर रहा हूं वह यह है कि अगर मैं निम्नलिखित खोज क्वेरी को निष्पादित करता हूं:
db.collection.find({"x":y}).skip(10000).limit(1000);
समय में दो अलग-अलग बिंदुओं पर: t1 और t2 , क्या मुझे अलग परिणाम सेट मिलेंगे:
- जब t1 और t2 के बीच कोई अतिरिक्त लेखन नहीं हुआ है?
- जब t1 और t2 के बीच नए लेखन हुए हैं?
- नए सूचकांक हैं जिन्हें t1 और t2 के बीच जोड़ा गया है?
मैंने एक अस्थायी डेटाबेस पर कुछ परीक्षण चलाए हैं और मैंने जो परिणाम प्राप्त किए हैं, वे सभी 3 मामलों के लिए समान ( हां ) हैं - लेकिन मैं यह सुनिश्चित करना चाहता था और मैं निश्चित हूं कि मेरे परीक्षण के मामले पूरी तरह से नहीं थे।