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

Find de seneste og nærmeste indlæg, begræns 20

Jeg formoder, at du i sidste ende ender med en liste over indlæg, der har to diskrete rangeringsdimensioner, dvs.:

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

Det er lige meget hvad enhederne er, lad os sige sekunder og meter. Hvis du vil have begge dele til at påvirke sorteringsrangeringen, ender du med en rangeringsalgoritme, på det enkleste noget som dette:

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

Hvor C1 og C2 er konstanter, du kan justere for at justere vægtningerne. Værdierne vil afhænge af, hvilke enheder du bruger, og hvor meget rangeringspåvirkning du tildeler hver dimension.

En anden mulighed kunne være at bestille først efter en samlet tid og derefter distance, så alle indlæg fra i dag sorteret efter distance; efterfulgt af gårsdagens ordnet efter afstand, og så videre. Eller omvendt, sortering efter et afstandsområde, derefter alder, så alt inden for (0 - 1000m) sorteret efter alder; efterfulgt af alle inden for (1001 - 2000m), og så videre.




  1. MongoDB - $addToSet på en liste over Embedded Document

  2. Yeoman, Mongoose og MongoDB Stilladser

  3. Filtrer underdokumentarray, mens de stadig returnerer overordnede data, hvis de er tomme

  4. Udfyld en mangustmodel med et felt, der ikke er et id