sql >> Base de Datos >  >> NoSQL >> MongoDB

Encuentra las publicaciones más recientes y cercanas, límite 20

Supongo que finalmente terminas con una lista de publicaciones que tienen dos dimensiones de clasificación discretas, es decir:

{ age: 86400, distance: 1000 }
{ age: 172800, distance: 5000 }
{ age: 57600, distance: 20000 }
{ age: 288000, distance: 8000 }

Realmente no importa cuáles son las unidades, digamos segundos y metros. Si desea que ambos afecten el rango de clasificación, entonces termina con un algoritmo de clasificación, en su forma más simple, algo como esto:

rank = (C1 * age) + (C2 * distance)

Donde C1 y C2 son constantes que puede modificar para ajustar las ponderaciones. Los valores dependerán de las unidades que esté utilizando y de la influencia de clasificación que asigne a cada dimensión.

Otra opción podría ser ordenar primero por un agregado de tiempo y luego por distancia, de modo que todas las publicaciones de hoy se ordenen por distancia; seguida de la de ayer ordenada por distancia, y así sucesivamente. O viceversa, ordenando por rango de distancia, luego por edad, de modo que todo dentro de (0 - 1000m) ordenado por edad; seguido por todos dentro (1001 - 2000m), y así sucesivamente.