आप क्रम में प्रत्येक मान के लिए एक "वजन" $project
करने की जरूरत है MongoDB शर्तों में, और इसका मतलब है .aggregate()
विधि:
db.users.aggregate([
{ "$project": {
"status": 1,
"a_field": 1,
"another_field": 1,
"pretty_much_every_field": 1,
"weight": {
"$cond": [
{ "$eq": [ "$status", "A" ] },
10,
{ "$cond": [
{ "$eq": [ "$status", "B" ] },
8,
{ "$cond": [
{ "$eq": [ "$status", "C" ] },
6,
{ "$cond": [
{ "$eq": [ "$status", "D" ] },
4,
0
]}
]}
]}
]
}
}},
{ "$sort": { "weight": -1 } }
])
ternary$cond
का घोंसला उपयोग प्रत्येक आइटम को "स्थिति" के लिए दिए गए तर्कों के क्रम में आदेशित "वजन" मान के रूप में माना जा सकता है।
बदले में यह $sort
पर खिलाया जाता है, जहां अनुमानित मूल्य ("वजन") का उपयोग वेटेड मिलान द्वारा किए गए परिणामों को क्रमबद्ध करने के लिए किया जाता है।
तो इस तरह वरीयता को "स्थिति" मैचों के क्रम में दिया जाता है, जो क्रमबद्ध परिणामों में पहले दिखाई देता है।
स्रोत
2015-10-09 12:08:08
यह एक साधारण प्रकार है। मैं मूल्यों के अनुसार कैसे क्रमबद्ध करूंगा। तो- स्थिति, 'सी', 'ए', 'बी', 'डी' - यह उपयोगकर्ताओं को स्थिति 'सी' के साथ पहले 'ए' और फिर से वापस कर देगा। –
क्या आप पैरामीटर के रूप में स्थिति के साथ एक सरणी (क्रमबद्ध के रूप में क्रमबद्ध) भेजना चाहते हैं? – makcs