sql >> Databasteknik >  >> NoSQL >> MongoDB

få distinkta värden med sorterad data

Du kan använda aggregeringsramverket för att gruppera efter det element du vill ska vara distinkt (grupp gör det distinkt). Så om du vill sortera på poäng och få distinkta nycklar kan du göra följande - sortera efter poäng, gruppera efter nyckel och lägg till poäng som matriser av element (redan sorterade):

db.test.aggregate([
    { $sort : { score : -1 } },
    { $group : {_id : "$key", scores : { $push : "$score" } } }
])

Detta kommer att resultera i distinkta nycklar tillsammans med en rad poäng som är de poäng som finns i dokumenten med dubbletter av nycklar. Jag är inte säker på att det är exakt vad du letar efter och jag vet att det här är en gammal fråga men jag tänkte att det här kan hjälpa någon annan att titta på det i framtiden - som ett alternativt sätt att göra detta.



  1. Listar alla samlingar i en mongodatabas i ett nodejs-skript

  2. MongoDB:$elemMatch

  3. Upsert fungerar inte för updateOne bulkWrite v3.4

  4. mongoDB-fråga för att hämta från kapslad arraysamling