आप मूल जावास्क्रिप्ट सॉर्ट ()
सरणी पर विधि cursor.toArray()
विधि:
var order = ["food", "coffee", "grocery"];
var docs = db.collection.find().toArray().sort(function(a, b) {
return order.indexOf(a.category) - order.indexOf(b.category);
});
printjson(docs);
नमूना आउटपुट
[
{
"_id" : "4JW7miNITl",
"category" : "food"
},
{
"_id" : "4Je4kmrrbZ",
"category" : "coffee"
},
{
"_id" : "4JgAh3N86x",
"category" : "coffee"
},
{
"_id" : "4JEEuhNIae",
"category" : "grocery"
}
]
नए MongoDB 3.4 संस्करण के साथ, आपको स्थानीय MongoDB ऑपरेटरों के उपयोग का लाभ उठाने में सक्षम होना चाहिए $addFields
और $indexOfArray
एकत्रीकरण ढांचे में।
- द
$addFieldsपाइपलाइन चरण आपको$ की अनुमति देता है परियोजनाअन्य सभी मौजूदा क्षेत्रों को जाने बिना मौजूदा दस्तावेज़ों में नए फ़ील्ड। - द
$indexOfArrayअभिव्यक्ति किसी दिए गए सरणी में विशेष तत्व की स्थिति लौटाती है।
तो इसे पूरी तरह से डालते हुए आप निम्नलिखित समग्र ऑपरेशन (MongoDB 3.4 के साथ) आज़मा सकते हैं:
var order = ["food", "coffee", "grocery"],
projection = {
"$addFields" : {
"__order" : { "$indexOfArray" : [ order, "$category" ] }
}
},
sort = { "$sort" : { "__order" : 1 } };
db.collection.aggregate([ projection, sort]);