2011-03-30 8 views
5

Uso de MongoDB Estoy consultando casas que están a 25 millas de latitud/longitud.Consulta cerca vs dentro de

Mi primer intento de hacer esto utiliza el comando cerca, así:

var near = Query.Near("Coordinates", coordinates.Latitude, coordinates.Longitude, find.GetRadiansAway(), false); 
var query = Collection().Find(near); 
var listings = query.ToList(); 

El problema con cerca es que sólo devuelve 100 anuncios, mientras que yo quiero volver todos los listados a 25 millas de las coordenadas .

Mi siguiente intento fue utilizar dentro:

var within = Query.WithinCircle("Coordinates", coordinates.Latitude, coordinates.Longitude, find.GetRadiansAway(), false); 
var query = Collection().Find(within); 
var listings = query.ToList(); 

Dentro vuelve todos los listados dentro de 25 millas, que es grande, sin embargo, no clasificarlos por lo cerca que están a las coordenadas del centro como lo hace cerca .

Así que mi pregunta es, ¿cómo puedo obtener lo mejor de ambos mundos? ¿Cómo obtengo todos los listados dentro de 25 millas Y los ordenan por proximidad a las coordenadas del centro?

Respuesta

11

consultas geoespaciales $near establecen un valor predeterminado limit() de 100 resultados. Debería poder obtener más resultados estableciendo un nuevo limit().

Mientras que las consultas "cercanas" se ordenan por distancia, "dentro" no es (aunque "dentro" no tiene un límite predeterminado).

+1

Siempre estoy contento cuando la solución a un problema es 1 línea de código. – Justin

Cuestiones relacionadas