Nehmen wir an, ich habe in MongoDB eine Reihe von Beiträgen (für einen Feed, wie einen Twitter / Facebook / foursquare-Feed), und jeder Beitrag hat ein Standort & amp; ein Zeitstempel .
Was ist der beste Weg, um die neuesten & amp; nächste Beiträge, begrenzt auf 20 Beiträge?
Dies ist auch eine subjektive Frage. Nehmen wir an, Sie können jetzt $maxDistance
und die maximale Zeit angeben (ich bin mir nicht sicher, wie Sie es sonst machen würden). Wie würdest du sie spezifizieren? Würden Sie nach dem neuesten oder nächsten sortieren oder es zufällig behalten oder anders sortieren? Welcher Sortieralgorithmus ist Ihrer Meinung nach am interessantesten?
Ich nehme an, Sie haben letztendlich eine Liste von Beiträgen mit zwei diskreten Rangordnungsdimensionen, d. h.
%Vor%Es spielt keine Rolle, was die Einheiten sind, sagen wir mal Sekunden und Meter. Wenn Sie beide den Sortierungsrang beeinflussen wollen, erhalten Sie einen Ranking-Algorithmus, im einfachsten Fall so:
%Vor%Wobei C <1> und C 2 Konstanten sind, die Sie optimieren können, um die Gewichtungen abzustimmen. Die Werte hängen davon ab, welche Einheiten Sie verwenden und wie viel Einfluss Sie auf die einzelnen Dimensionen haben.
Eine andere Option könnte sein, zuerst nach einem Zeitaggregat und dann nach der Entfernung zu sortieren, also alle Beiträge von heute nach Entfernung sortiert; gefolgt von gestern nach Entfernung, und so weiter. Oder umgekehrt, nach einer Entfernung sortierend, dann alternd, also alle innerhalb (0 - 1000m) geordnet nach Alter; gefolgt von allen innerhalb (1001 - 2000m), und so weiter.
Tags und Links geospatial mongodb sorting