Ich habe eine Sammlung wieWie erhält man den maximalen Wert eines Feldes für jede Gruppe mit dem Array der entsprechenden Dokumente?
{
"_id" : ObjectId("5738cb363bb56eb8f76c2ba8"),
"records" : [
{
"Name" : "Joe",
"Salary" : 70000,
"Department" : "IT"
}
]
},
{
"_id" : ObjectId("5738cb363bb56eb8f76c2ba9"),
"records" : [
{
"Name" : "Henry",
"Salary" : 80000,
"Department" : "Sales"
},
{
"Name" : "Jake",
"Salary" : 40000,
"Department" : "Sales"
}
]
},
{
"_id" : ObjectId("5738cb363bb56eb8f76c2baa"),
"records" : [
{
"Name" : "Sam",
"Salary" : 90000,
"Department" : "IT"
},
{
"Name" : "Tom",
"Salary" : 50000,
"Department" : "Sales"
}
]
}
Ich möchte mit dem höchsten Gehalt um die Ergebnisse haben von jeder Abteilung
{"Name": "Sam", "Salary": 90000, "Department": "IT"}
{"Name": "Henry", "Salary": 80000, "Department": "Sales"}
Ich konnte das höchste Gehalt bekommen. Aber ich konnte die entsprechenden Angestelltennamen nicht bekommen.
db.HR.aggregate([
{ "$unwind": "$records" },
{ "$group":
{
"_id": "$records.Department",
"max_salary": { "$max": "$records.Salary" }
}
}
])
Könnte mir jemand helfen?
große Frage, können Sie hinzufügen, was Sie versucht haben, und bekam einen Fehler entdeckt? – inspired
Ich könnte es in SQL mit einem Self-Join lösen. Aber mit Mongo finde ich keinen Weg – dapangmao