एग्रीगेशन: $unwind, $sort, $limit, $group से नवीनतम ऐरे एलिमेंट्स प्राप्त करें
सभी डॉक्यूमेंट्स के ऐरे फ़ील्ड में से नवीनतम (सबसे बड़े ID वाले) एलिमेंट्स प्राप्त करने के लिए एग्रीगेशन पाइपलाइन का उपयोग करें।
उदाहरण: संग्रह बनाना
> db.demo179.insertOne({
"Name": "Chris",
"Details": [{"Id": 101, "Subject": "MongoDB"}, {"Id": 102, "Subject": "MySQL"}]
});
{ "acknowledged": true, "insertedId": ObjectId("5e3980299e4f06af551997f9") }
> db.demo179.insertOne({
"Name": "David",
"Details": [{"Id": 103, "Subject": "Java"}, {"Id": 104, "Subject": "C"}]
});
{ "acknowledged": true, "insertedId": ObjectId("5e39802a9e4f06af551997fa") }
सभी डॉक्यूमेंट्स देखना
> db.demo179.find().pretty();
{
"_id": ObjectId("5e3980299e4f06af551997f9"),
"Name": "Chris",
"Details": [{"Id": 101, "Subject": "MongoDB"}, {"Id": 102, "Subject": "MySQL"}]
}
{
"_id": ObjectId("5e39802a9e4f06af551997fa"),
"Name": "David",
"Details": [{"Id": 103, "Subject": "Java"}, {"Id": 104, "Subject": "C"}]
}
नवीनतम एंट्रीज़ ढूंढने की एग्रीगेशन क्वेरी
> db.demo179.aggregate([
{ "$unwind": "$Details" },
{ "$sort": { "Details.Id": -1 } },
{ "$limit": 2 },
{
"$group": {
"_id": "$Details.Id",
"Name": { "$first": "$Name" },
"Details": { "$push": "$Details" }
}
},
{
"$project": { "_id": 0, "Name": 1, "Details": 1 }
}
])
आउटपुट:
{ "Name": "David", "Details": [{"Id": 103, "Subject": "Java"}] }
{ "Name": "David", "Details": [{"Id": 104, "Subject": "C"}] }
पाइपलाइन ने सभी डिटेल्स को अनविंड किया, ID डिसेंडिंग क्रम में सॉर्ट किया, शीर्ष 2 लिए, फिर ग्रुप करके प्रोजेक्ट किया।