MongoDB में $addFields और $cond का उपयोग करके कस्टम क्रम में सॉर्ट करना
MongoDB में किसी फील्ड के मानों के आधार पर कस्टम क्रम (वर्णानुक्रम नहीं) में सॉर्ट करने के लिए $addFields के साथ $cond का उपयोग करके एक सॉर्ट की फील्ड बनाएं, फिर उस पर सॉर्ट करें।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo62.insertOne({"Subject":"MySQL"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e287084cfb11e5c34d8992f") }
> db.demo62.insertOne({"Subject":"MongoDB"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e287085cfb11e5c34d89930") }
> db.demo62.insertOne({"Subject":"Java"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e287086cfb11e5c34d89931") }
सभी दस्तावेज़ देखना
> db.demo62.find();
आउटपुट:
{ "_id" : ObjectId("5e287084cfb11e5c34d8992f"), "Subject" : "MySQL" }
{ "_id" : ObjectId("5e287085cfb11e5c34d89930"), "Subject" : "MongoDB" }
{ "_id" : ObjectId("5e287086cfb11e5c34d89931"), "Subject" : "Java" }
कस्टम क्रम में सॉर्ट करने के लिए एग्रीगेशन (MongoDB, MySQL, Java)
> db.demo62.aggregate([
{
$addFields: {
sortByWords: {
$cond: [
{ $eq: ["$Subject", "MongoDB"] },
0,
{ $cond: [{ $eq: ["$Subject", "MySQL"] }, 1, 2] }
]
}
}
},
{
$sort: { sortByWords: 1 }
}
]);
आउटपुट:
{ "_id" : ObjectId("5e287085cfb11e5c34d89930"), "Subject" : "MongoDB", "sortByWords" : 0 }
{ "_id" : ObjectId("5e287084cfb11e5c34d8992f"), "Subject" : "MySQL", "sortByWords" : 1 }
{ "_id" : ObjectId("5e287086cfb11e5c34d89931"), "Subject" : "Java", "sortByWords" : 2 }
व्याख्या:
$addFields- नया फील्डsortByWordsजोड़ता है$cond- यदि Subject == "MongoDB" तो 0, अन्यथा यदि "MySQL" तो 1, अन्यथा 2$sort: {sortByWords: 1}- संख्यात्मक मान के आधार पर आरोही क्रम
बेहतर विकल्प (MongoDB 3.6+): $switch का उपयोग करें
db.demo62.aggregate([
{
$addFields: {
sortByWords: {
$switch: {
branches: [
{ case: { $eq: ["$Subject", "MongoDB"] }, then: 0 },
{ case: { $eq: ["$Subject", "MySQL"] }, then: 1 }
],
default: 2
}
}
}
},
{ $sort: { sortByWords: 1 } }
])
अन्य उपयोग: प्राथमिकता-आधारित सॉर्टिंग, स्टेटस ऑर्डर (Pending, Approved, Rejected), आदि।