आपको $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 } }
])
टर्नरी का नेस्टेड उपयोग $cond
"स्थिति" के लिए प्रत्येक आइटम को दिए गए तर्कों के क्रम में एक आदेशित "वजन" मान के रूप में माना जा सकता है।
यह बदले में $sort
. को खिलाया जाता है , जहां अनुमानित मूल्य ("वजन") का उपयोग भारित मिलान द्वारा प्राप्त परिणामों को क्रमबद्ध करने के लिए किया जाता है।
तो इस तरह से "स्थिति" मिलान के क्रम को वरीयता दी जाती है, जो क्रमबद्ध परिणामों में सबसे पहले दिखाई देता है।