Du kan bruge aggregeringsrammen til at gruppere efter det element, du ønsker skal være distinkt (gruppe gør det distinkt). Så hvis du ønsker at sortere på score, så få forskellige nøgler, kan du gøre følgende - sorter efter score, grupper efter nøgle og tilføje score som arrays af elementer (allerede sorteret):
db.test.aggregate([
{ $sort : { score : -1 } },
{ $group : {_id : "$key", scores : { $push : "$score" } } }
])
Dette vil resultere i særskilte nøgler sammen med en række scores, som er de scores, der er indeholdt i dokumenterne med duplikerede nøgler. Jeg er ikke sikker på, at det er præcis det, du leder efter, og jeg ved, at dette er et gammelt spørgsmål, men jeg tænkte, at dette kunne hjælpe en anden til at se på det i fremtiden - som en alternativ måde at gøre dette på.