इसे प्राकृतिक क्रम कहा जाता है :
<ब्लॉकक्वॉट>natural order
वह क्रम जिसमें डेटाबेस डिस्क पर दस्तावेज़ों को संदर्भित करता है। यह डिफ़ॉल्ट सॉर्ट क्रम है। देखें $natural
और Return in Natural Order
।
यह पुष्टि करता है कि सामान्य तौर पर आप उन्हें उसी क्रम में प्राप्त करते हैं जैसा आपने डाला था, लेकिन इसकी गारंटी नहीं है-जैसा कि आपने देखा।
<ब्लॉकक्वॉट>स्वाभाविक क्रम में वापसी
$natural
पैरामीटर डेटाबेस के भीतर उनके प्राकृतिक क्रम के अनुसार आइटम लौटाता है। यह आदेश एक आंतरिक कार्यान्वयन विशेषता है, और आपको इसके भीतर किसी विशेष संरचना पर भरोसा नहीं करना चाहिए।
सूचकांक उपयोग
वे क्वेरी जिनमें $natural
. के आधार पर एक क्रम शामिल है आदेश दें नहीं निम्नलिखित अपवाद के साथ क्वेरी विधेय को पूरा करने के लिए अनुक्रमणिका का उपयोग करें:यदि क्वेरी विधेय _id
पर एक समानता शर्त है फ़ील्ड { _id: <value> }
, फिर $natural
. के अनुसार क्रम से क्वेरी करें आदेश _id
. का उपयोग कर सकता है सूचकांक।
एमएमएपीवी1
सामान्यतया, प्राकृतिक क्रम MMAPv1 संग्रहण इंजन के लिए निम्न अपवाद के साथ सम्मिलन क्रम को दर्शाता है। MMAPv1 भंडारण इंजन के लिए, प्राकृतिक क्रम सम्मिलन आदेश को प्रतिबिंबित नहीं करता है यदि दस्तावेज़ वृद्धि के कारण दस्तावेज़ स्थानांतरित होते हैं या संचालन मुक्त स्थान को हटाते हैं जो तब नए सम्मिलित दस्तावेज़ों द्वारा उठाए जाते हैं।
जाहिर है, उल्लिखित दस्तावेज़ों की तरह, आपको नहीं . करना चाहिए इस डिफ़ॉल्ट आदेश पर भरोसा करें (यह आदेश एक आंतरिक कार्यान्वयन सुविधा है, और आपको इसके भीतर किसी विशेष संरचना पर भरोसा नहीं करना चाहिए। )।
यदि आपको चीजों को क्रमबद्ध करने की आवश्यकता है, तो क्रमबद्ध समाधानों का उपयोग करें।
मूल रूप से, निम्नलिखित दो कॉलों को उसी क्रम में दस्तावेज़ वापस करना चाहिए (चूंकि डिफ़ॉल्ट ऑर्डर $natural
है ):
db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()
यदि आप किसी अन्य फ़ील्ड के अनुसार क्रमित करना चाहते हैं (उदा. name
) आप ऐसा कर सकते हैं:
db.mycollection.find().sort({ "name": 1 })