MongoDB में, आप limit()
. का उपयोग करके क्वेरी के परिणामों को सॉर्ट कर सकते हैं विधि।
MongoDB में, जब आप db.collection.find()
. का उपयोग करके किसी संग्रह को क्वेरी करते हैं विधि, आप जोड़ सकते हैं sort()
यह निर्दिष्ट करने की विधि कि परिणामों को कैसे क्रमबद्ध किया जाना चाहिए। sort()
विधि कर्सर के लिए सॉर्ट क्रम निर्दिष्ट करती है।
sort()
का उपयोग करते समय विधि, आपको पैरामीटर के रूप में सॉर्ट ऑर्डर प्रदान करना होगा। यह एक JSON दस्तावेज़ होना चाहिए जो सॉर्ट ऑर्डर को परिभाषित करता है। इसमें आम तौर पर एक या अधिक फ़ील्ड होंगे, प्रत्येक के बाद 1
. होगा या -1
, इस पर निर्भर करता है कि सॉर्ट आरोही या अवरोही क्रम में होना चाहिए या नहीं।
उदाहरण
सबसे पहले एक प्रश्न करते हैं बिना sort()
का उपयोग करके (ताकि हम प्राकृतिक क्रम को देख सकें):
बिना sort()
db.musicians.find( )
परिणाम:
{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" } { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 } { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 } { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 } { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 } { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 } { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 } { "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 }
sort()
के साथ आरोही क्रम में
1
. का मान फ़ील्ड नाम के आगे निर्दिष्ट करता है कि दस्तावेज़ों को निर्दिष्ट फ़ील्ड द्वारा आरोही क्रम में क्रमबद्ध किया जाना चाहिए।
यहां हम नाम के आधार पर परिणामों को आरोही क्रम में क्रमबद्ध करते हैं:
db.musicians.find( ).sort( { name: 1 } )
परिणाम:
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 } { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" } { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 } { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 } { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 } { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 } { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 } { "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 }
sort()
के साथ अवरोही क्रम में
-1
. का मान फ़ील्ड नाम के आगे अवरोही क्रम निर्दिष्ट करता है।
यहां हम नाम के आधार पर परिणामों को अवरोही क्रम में क्रमबद्ध करते हैं:
db.musicians.find( ).sort( { name: -1 } )
परिणाम:
{ "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 } { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 } { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 } { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 } { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 } { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 } { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" } { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 }
एकाधिक फ़ील्ड
आप कई क्षेत्रों द्वारा क्रमबद्ध कर सकते हैं। बस प्रत्येक फ़ील्ड को अल्पविराम से अलग करें। जब आप ऐसा करते हैं, तो दस्तावेज़ों को पहले निर्दिष्ट फ़ील्ड द्वारा क्रमबद्ध किया जाएगा, फिर अगला, और इसी तरह।
यहां, हम उपकरण . द्वारा क्रमबद्ध करते हैं फ़ील्ड, उसके बाद जन्म खेत। यदि दो या दो से अधिक संगीतकार एक ही वाद्य यंत्र बजाते हैं, तो जन्म फ़ील्ड निर्धारित करती है कि कैसे वे एक दूसरे के सापेक्ष क्रमबद्ध हैं।
db.musicians.find( ).sort( { instrument: 1, born: 1 } )
परिणाम:
{ "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 } { "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 } { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 } { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 } { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 } { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 } { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" } { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }
और केवल यह देखने के लिए कि दूसरा फ़ील्ड ऑर्डर को कैसे प्रभावित कर सकता है, इसे एक नकारात्मक मान (अवरोही) पर स्विच करें:
db.musicians.find( ).sort( { instrument: 1, born: -1 } )
परिणाम:
{ "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 } { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 } { "_id" : 7, "name" : "Jeff Burrows", "instrument" : "Drums", "born" : 1968 } { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 } { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 } { "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 } { "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 } { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
सीमा के अनुसार क्रमित करें
आप sort()
. का उपयोग कर सकते हैं limit()
के साथ सीमित परिणाम सेट के परिणामों को क्रमबद्ध करने के लिए।
यहां हम परिणामों को 3 दस्तावेज़ों तक सीमित करते हैं:
db.musicians.find( ).limit(3).sort( { name: 1, born: -1 } )
परिणाम:
{ "_id" : 5, "name" : "Don Airey", "instrument" : "Keyboards", "born" : 1948 } { "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" } { "_id" : 2, "name" : "Ian Paice", "instrument" : "Drums", "born" : 1948 }
अगर हम नाम स्विच करते हैं अवरोही क्रम में:
db.musicians.find( ).limit(3).sort( { name: -1, born: -1 } )
परिणाम:
{ "_id" : 8, "name" : "Stuart Chatwood", "instrument" : "Bass", "born" : 1969 } { "_id" : 4, "name" : "Steve Morse", "instrument" : "Guitar", "born" : 1954 } { "_id" : 3, "name" : "Roger Glover", "instrument" : "Bass", "born" : 1945 }
ध्यान दें कि इस मामले में, जन्म कोई प्रभाव नहीं पड़ता है, क्योंकि किसी दिए गए नाम के लिए एक से अधिक परिणाम कभी नहीं होते हैं।
विभिन्न प्रकारों की तुलना करना
विभिन्न बीएसओएन प्रकारों के मूल्यों की तुलना करते समय, मोंगोडीबी निम्न तुलना क्रम का उपयोग करता है, निम्नतम से उच्चतम तक:
- मिनकी (आंतरिक प्रकार)
- शून्य
- संख्याएं (इंट्स, लॉन्ग, डबल्स)
- प्रतीक, स्ट्रिंग
- वस्तु
- सरणी
- बिनडाटा
- ऑब्जेक्ट आईडी
- बूलियन
- तारीख
- टाइमस्टैम्प
- नियमित अभिव्यक्ति
- MaxKey (आंतरिक प्रकार)
ध्यान दें कि गैर-मौजूद फ़ील्ड को एक शून्य मान (या खाली बीएसओएन ऑब्जेक्ट) के समान माना जाता है।