sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Ordenar los resultados de MongoDB GeoNear por algo que no sea la distancia?

Si estás usando el $near comando, primero debe ordenar por distancia o el concepto de "cerca" realmente no tiene ningún sentido. En un globo todo puede estar "cerca" de un punto dado, es solo una cuestión de "qué tan cerca".

Tienes dos opciones aquí:

  1. limitar los resultados de $near
  2. usa el $within comando

Creo que lo que estás buscando es el $within comando

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

Luego puede ordenarlos por alguna otra clave:

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

Sin embargo, el comando within puede proporcionar demasiados resultados, por lo que probablemente desee poner algo de lógica para limitar la cantidad de elementos devueltos por $within .

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

La verdad es que, si alcanza un límite específico, el valor de su $within el comando generalmente comienza a caer. Su código de cliente puede querer comprobar si está alcanzando los resultados máximos.