MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb:Holen Sie sich Dokumente sortiert nach einem dynamischen Ranking

Ich bin neu bei Mongodb und Aggregationsframeworks, berücksichtige aber die Antwort Tim B gab mir folgendes:

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

Verwenden von $project Sie können Dokumente umgestalten, um vorberechnete Werte einzufügen, in Ihrem Fall das Ranking-Feld. Danach mit $sort Sie können die Dokumente nach Rang in der gewünschten Reihenfolge sortieren, indem Sie 1 für aufsteigend oder -1 für absteigend angeben.

Es tut mir leid für die schreckliche Codeformatierung, ich habe versucht, es so lesbar wie möglich zu machen.