आप मूल जावास्क्रिप्ट सॉर्ट ()
सरणी पर विधि 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]);