MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongodb:ottieni documenti ordinati in base a una classifica dinamica

Sono nuovo di Mongodb e dei framework di aggregazione, ma considerando la risposta Tim B rinunciato mi è venuto in mente questo:

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

Utilizzo di $project puoi rimodellare i documenti per inserire valori precalcolati, nel tuo caso il campo della classifica. Successivamente utilizzando $sort puoi ordinare i documenti per grado nell'ordine che preferisci specificando 1 per crescente o -1 per decrescente.

Mi dispiace per la pessima formattazione del codice, ho cercato di renderlo il più leggibile possibile.