इसे एक सामान्य अवधारणा के रूप में "भार" कहा जाता है। तो बिना किसी अन्य तंत्र के, फिर आप इसे MongoDB क्वेरी में तार्किक रूप से दस्तावेज़ में "वजन" के मानों को "प्रोजेक्ट" करके तार्किक रूप से संभालते हैं।
आपके दस्तावेज़ में मौजूद फ़ील्ड को "प्रोजेक्ट करने" और बदलने के लिए आपका तरीका .एग्रीगेट ()
विधि, और विशेष रूप से यह $project
पाइपलाइन चरण:
db.collection.aggregate([
{ "$project": {
"getthisfirst": 1,
"weight": {
"$cond": [
{ "$eq": [ "$getthisfirst", "yes" ] },
10,
{ "$cond": [
{ "$eq": [ "$getthisfirst", "maybe" ] },
5,
0
]}
]
}
}},
{ "$sort": { "weight": -1 } }
]);
$cond
यहां एक ऑपरेटर है "ternary"
( if/then/else ) शर्त जहां पहला तर्क बूलियन true|false
पर पहुंचने वाला एक सशर्त स्टेटमेंट है . अगर सत्य
"फिर" दूसरा तर्क परिणाम के रूप में लौटाया जाता है, अन्यथा "अन्य" या तीसरा तर्क प्रतिक्रिया में वापस किया जाता है।
इस "नेस्टेड" मामले में, जहां "हां" एक मैच है तो एक निश्चित "वेट" स्कोर असाइन किया जाता है, अन्यथा हम अगली कंडीशन टेस्ट पर आगे बढ़ते हैं जहां "शायद" एक मैच होता है तो एनोटर स्कोर असाइन किया जाता है, या अन्यथा स्कोर 0
. है चूंकि हमारे पास मिलान करने के लिए केवल तीन संभावनाएं हैं।
फिर $sort
शीर्ष पर सबसे बड़े "वजन" वाले परिणामों को अच्छी तरह से "आदेश" (घटते क्रम में) के लिए शर्त लागू की जाती है।