sql >> Databasteknik >  >> NoSQL >> MongoDB

Sortera MongoDB GeoNear-resultat efter något annat än avstånd?

Om du använder $near kommandot då måste du först sortera efter avstånd, annars är begreppet "nära" inte riktigt meningsfullt. På en jordglob kan allt vara "nära" till en given punkt, det är bara en fråga om "hur nära".

Du har två alternativ här:

  1. begränsa resultaten för $near
  2. använd $within kommando

Jag tror att det du letar efter är $within kommando

center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})

Du kan sedan sortera dessa efter någon annan nyckel:

db.places.find(...).sort({created:1})

Men kommandot inom kan ge för många resultat, så du vill antagligen använda lite logik för att begränsa antalet objekt som returneras av $within .

db.places.find(...).limit(50).sort({created:1})

Sanningen är att om du når en specifik gräns, värdet på din $within kommandot börjar generellt falla. Din kundkod kanske vill kontrollera om du når maxresultaten.



  1. MongoDB Aggregationsoperatörer för returdatumdelar

  2. Hur man väntar i Node.js

  3. Var är AccountKey för CosmosDB i Azure Portal

  4. mongoDB Aggregation:summa baserad på arraynamn