sql >> Databáze >  >> NoSQL >> MongoDB

Řadit výsledky MongoDB GeoNear podle něčeho jiného než podle vzdálenosti?

Pokud používáte $near příkaz pak musíte nejprve seřadit podle vzdálenosti nebo koncept "blízko" nedává žádný smysl. Na zeměkouli může být všechno „blízko“ danému bodu, jde jen o to „jak blízko“.

Zde máte dvě možnosti:

  1. omezení výsledků $near
  2. použijte $within příkaz

Myslím, že to, co hledáte, je $within příkaz

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

Poté je můžete seřadit podle jiného klíče:

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

Příkaz inside však může poskytnout příliš mnoho výsledků, takže pravděpodobně budete chtít použít nějakou logiku k omezení počtu položek vrácených $within .

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

Pravdou je, že pokud dosáhnete určitého limitu, hodnota vašeho $within příkaz obecně začne padat. Váš klientský kód může chtít zkontrolovat, zda dosahujete maximálních výsledků.



  1. Jaký je nejúčinnější databázový stroj orientovaný na dokumenty pro ukládání tisíců středně velkých dokumentů?

  2. Mongoose Mongodb dotazuje pole objektů

  3. Jak agregovat součet v MongoDB, abyste získali celkový počet?

  4. Jak implementovat Redis Multi-Exec pomocí Spring-data-Redis