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

Finden Sie die neuesten und nächstgelegenen Beiträge, maximal 20

Ich nehme an, Sie erhalten am Ende eine Liste von Beiträgen, die zwei getrennte Ranking-Dimensionen haben, d. h.:

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

Es spielt keine Rolle, was die Einheiten sind, sagen wir Sekunden und Meter. Wenn Sie möchten, dass beide den Sortierrang beeinflussen, erhalten Sie am Ende einen Rangalgorithmus, im einfachsten Fall etwa so:

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

Wobei C1 und C2 sind Konstanten, die Sie anpassen können, um die Gewichtungen abzustimmen. Die Werte hängen davon ab, welche Einheiten Sie verwenden und wie viel Ranking-Einfluss Sie jeder Dimension zuweisen.

Eine andere Option könnte darin bestehen, zuerst nach Zeit und dann nach Entfernung zu sortieren, sodass alle Posts von heute nach Entfernung sortiert sind. gefolgt von den gestrigen nach Entfernung geordneten und so weiter. Oder umgekehrt, Sortierung nach Entfernungsbereich, dann Alter, also alle innerhalb (0 - 1000 m) nach Alter geordnet; gefolgt von allen innerhalb (1001 - 2000 m) und so weiter.