अद्यतन करें: यह उत्तर पुराना प्रतीत होता है; ऐसा लगता है कि $project
. का उपयोग करके कस्टम सॉर्टिंग कमोबेश हासिल की जा सकती है छँटाई से पहले इनपुट दस्तावेज़ों को बदलने के लिए एकत्रीकरण पाइपलाइन का कार्य। @ अरी का जवाब भी देखें।
मुझे नहीं लगता कि यह सीधे संभव है; सॉर्ट दस्तावेज़ निश्चित रूप से कस्टम तुलना फ़ंक्शन प्रदान करने के किसी भी तरीके का उल्लेख नहीं करता है।
आप शायद क्लाइंट में सॉर्ट करना सबसे अच्छा कर रहे हैं, लेकिन यदि आप सर्वर पर इसे करने के लिए वास्तव में दृढ़ हैं, तो आप db.eval()
का उपयोग करने में सक्षम हो सकते हैं। सर्वर पर सॉर्ट चलाने की व्यवस्था करने के लिए (यदि आपका क्लाइंट इसका समर्थन करता है)।
सर्वर-साइड सॉर्ट:
db.eval(function() {
return db.scratch.find().toArray().sort(function(doc1, doc2) {
return doc1.a - doc2.a
})
});
समकक्ष क्लाइंट-साइड सॉर्ट बनाम:
db.scratch.find().toArray().sort(function(doc1, doc2) {
return doc1.a - doc2.b
});
ध्यान दें कि एक एकत्रीकरण पाइपलाइन और $orderby
द्वारा क्रमबद्ध करना भी संभव है ऑपरेटर (यानी .sort()
. के अलावा ) हालांकि इनमें से कोई भी तरीका आपको कस्टम सॉर्ट फ़ंक्शन प्रदान नहीं करने देता है।