MongoDB किसी विशेष क्रम में दस्तावेज़ों को सॉर्ट करने के कुछ तरीके प्रदान करता है। इनमें से प्रत्येक हमें दस्तावेजों को आरोही या अवरोही क्रम में क्रमबद्ध करने की अनुमति देता है।
$text
. के परिणामों को क्रमित करने का विकल्प भी है खोज - परिकलित textScore
. द्वारा छँटाई मेटाडेटा अवरोही क्रम में।
यहाँ MongoDB में दस्तावेज़ों को सॉर्ट करने के 3 तरीके दिए गए हैं।
द cursor.sort()
विधि
cursor.sort()
विधि उस क्रम को निर्दिष्ट करती है जिसमें क्वेरी मेल खाने वाले दस्तावेज़ लौटाती है।
मान लीजिए हमारे पास employees
. नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
{ "_id" : 1, "name" : "Bob", "salary" : 55000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Christopher", "salary" : 45000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 } { "_id" : 6, "name" : "Homer", "salary" : 1 } { "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 } { "_id" : 9, "name" : "Xena", "salary" : 382000 }
यहां उन दस्तावेज़ों को उनके salary
. के अनुसार क्रमित करके लौटाने का एक उदाहरण दिया गया है फ़ील्ड को आरोही क्रम में, और उनका _id
. भी फ़ील्ड:
db.employees.find().sort( { salary: 1, _id: 1 } )
परिणाम:
{ "_id" : 6, "name" : "Homer", "salary" : 1 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 4, "name" : "Christopher", "salary" : 45000 } { "_id" : 1, "name" : "Bob", "salary" : 55000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 } { "_id" : 9, "name" : "Xena", "salary" : 382000 } { "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 }
यहाँ, हमने 1
. का प्रयोग किया है आरोही क्रम के लिए। यदि हम इसे अवरोही क्रम में चाहते हैं, तो हम केवल -1
. का उपयोग करेंगे इसके बजाय।
मेरे द्वारा _id
शामिल करने का कारण क्रम में फ़ील्ड इसलिए है क्योंकि, यदि दो या दो से अधिक कर्मचारियों का वेतन समान है, तो _id
फ़ील्ड का उपयोग उन दस्तावेज़ों को आपस में क्रमबद्ध करने के लिए किया जा सकता है।
हालांकि यह मामूली लग सकता है, यह MongoDB को हर बार क्वेरी चलाने पर उन दस्तावेज़ों को एक अलग क्रम में वापस करने से रोकेगा।
आप $text
. के परिणामों को भी क्रमित कर सकते हैं तलाशी। MongoDB देखें sort()
उदाहरण के लिए।
$sort
एकत्रीकरण पाइपलाइन चरण
एकत्रीकरण पाइपलाइन ढांचे का उपयोग करते समय, आप $sort
. का उपयोग कर सकते हैं सभी इनपुट दस्तावेज़ों को क्रमबद्ध करने के लिए चरण और उन्हें क्रमबद्ध क्रम में पाइपलाइन में लौटाता है।
यहां बताया गया है कि हम $sort
का उपयोग कैसे कर सकते हैं पिछले उदाहरण के समान परिणाम वापस करने के लिए। सिवाय, आइए उन्हें अवरोही में क्रमबद्ध करें इस बार ऑर्डर करें:
db.employees.aggregate(
[
{ $sort : { salary : -1, _id: 1 } }
]
)
परिणाम:
{ "_id" : 7, "name" : "Bartholomew", "salary" : 1582000 } { "_id" : 9, "name" : "Xena", "salary" : 382000 } { "_id" : 8, "name" : "Zoro", "salary" : 300000 } { "_id" : 2, "name" : "Sarah", "salary" : 128000 } { "_id" : 5, "name" : "Beck", "salary" : 82000 } { "_id" : 1, "name" : "Bob", "salary" : 55000 } { "_id" : 4, "name" : "Christopher", "salary" : 45000 } { "_id" : 3, "name" : "Fritz", "salary" : 25000 } { "_id" : 6, "name" : "Homer", "salary" : 1 }
आप $text
. के परिणामों को भी क्रमित कर सकते हैं तलाशी। देखें MongoDB $sort
उदाहरण के लिए।
$orderBy
क्वेरी संशोधक
$orderBy
क्वेरी संशोधक का उपयोग दो रूपों में से एक में किया जा सकता है।
इस तरह:
db.employees.find( { $query: {}, $orderBy: { salary: 1 } } )
या इस तरह::
db.employees.find()._addSpecial( "$orderby", { salary : 1 } )
$orderBy
क्वेरी संशोधक को mongo
. में हटा दिया गया है v3.2 के बाद से खोल, लेकिन मैंने इसे वैसे भी यहां शामिल करने का निर्णय लिया। अधिक जानकारी के लिए MongoDB दस्तावेज़ देखें।