इसके लिए, MongoDB में $group के साथ $max का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं:
> db.demo510.insertOne(
{
details:[
{
Name:"Chris",
Score:56
},
{
Name:"David",
Score:45
}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8845fa987b6e0e9d18f582") }
> db.demo510.insertOne(
{
details:[
{
Name:"Chris",
Score:56
},
{
Name:"David",
Score:47
}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8845fb987b6e0e9d18f583") }
> db.demo510.insertOne(
{
details:[
{
Name:"Chris",
Score:45
},
{
Name:"David",
Score:91
}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8845fb987b6e0e9d18f584") }
find() मेथड की मदद से संग्रह के सभी दस्तावेज़ प्रदर्शित करें:
> db.demo510.find();
यह निम्न आउटपुट देगा:
{ "_id" : ObjectId("5e8845fa987b6e0e9d18f582"), "details" : [ { "Name" : "Chris", "Score" : 56 }, { "Name" : "David", "Score" : 45 } ] }
{ "_id" : ObjectId("5e8845fb987b6e0e9d18f583"), "details" : [ { "Name" : "Chris", "Score" : 56 }, { "Name" : "David", "Score" : 47 } ] }
{ "_id" : ObjectId("5e8845fb987b6e0e9d18f584"), "details" : [ { "Name" : "Chris", "Score" : 45 }, { "Name" : "David", "Score" : 91 } ] }
एग्रीगेशन में अधिकतम मान के साथ सरणी तत्वों को मिलाने और समूहित करने की क्वेरी:
> db.demo510.aggregate([
{ "$project": {
"details": {
"$arrayElemAt": [
{ "$filter": {
"input": "$details",
"as": "res",
"cond": {
"$eq": [
"$$res.Score",
{ "$max": {
"$map": {
"input": "$details",
"as": "out",
"in": "$$out.Score"
}
}}
]
}
}},
0
]
}
}},
{ "$group": {
"_id": "$details.Name",
"Name": { "$first": "$details.Name" },
"count": { "$sum": 1 }
}}
])
यह निम्न आउटपुट देगा:
{ "_id" : "David", "Name" : "David", "count" : 1 }
{ "_id" : "Chris", "Name" : "Chris", "count" : 2 }