MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Encontre as postagens mais recentes e mais próximas, limite de 20


Suponho que você acabe com uma lista de postagens que têm duas dimensões de classificação discretas, ou seja:
{ age: 86400, distance: 1000 }
{ age: 172800, distance: 5000 }
{ age: 57600, distance: 20000 }
{ age: 288000, distance: 8000 }

Realmente não importa quais são as unidades, digamos segundos e metros. Se você quer que ambos afetem a classificação de classificação, você acaba com um algoritmo de classificação, em sua forma mais simples, algo assim:
rank = (C1 * age) + (C2 * distance)

Onde C1 e C2 são constantes que você pode ajustar para ajustar os pesos. Os valores dependerão de quais unidades você está usando e quanta influência de classificação você atribui a cada dimensão.

Outra opção poderia ser ordenar primeiro por um agregado de tempo e depois por distância, então todos os posts de hoje ordenados por distância; seguido pelo de ontem ordenado por distância, e assim por diante. Ou vice-versa, ordenando por faixa de distância, então idade, então todos dentro de (0 - 1000m) ordenados por idade; seguido por todos dentro (1001 - 2000m), e assim por diante.