sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb:Få dokument sorterade efter en dynamisk rankning

Jag är ny på Mongodb och aggregeringsramverk men funderar på svaret Tim B gav jag kom på detta:

db.coll.aggregate(
      { $project : {
                     "ranking" : { 
                                  "$divide" : ["$score", {"$subtract":[new Date(), "$updated"]}]
                                 }
                   }
      },
      { $sort : {"ranking" : 1}})

Använder $project du kan omforma dokument för att infoga förberäknade värden, i ditt fall rankningsfältet. Efter det med $sort du kan sortera dokumenten efter rangordning i den ordning du vill genom att ange 1 för stigande eller -1 för fallande.

Jag är ledsen för den hemska kodformateringen, jag försökte göra den så läsbar som möjligt.



  1. MongoDB skapar inte databas i skalet

  2. Använda cloneCollection i MongoDB:hur autentiseras?

  3. MongoDB och Java-drivrutin:ignorera skiftläge i fråga

  4. Mongo:Hur grupperar jag efter $vecka men returnerar startdatum och slutdatum för varje vecka istället?