Запрос рядом против внутри - PullRequest
5 голосов
/ 31 марта 2011

Используя MongoDB, я запрашиваю дома, которые находятся в пределах 25 миль от широты / долготы.

Моя первая попытка сделать это использовала команду ближнего, например, так:

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

Проблема с close заключается в том, что он возвращает только 100 записей, в то время как я хочу вернуть все записи в пределах 25 миль от координат.

Моя следующая попытка заключалась в использовании в пределах:

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

В пределахвозвращает все списки в пределах 25 миль, и это здорово, но не сортирует их по тому, насколько близко они находятся к координатам центра, как это делает ближний.

Так что мой вопрос: как мне получить лучшее из обоих?миры?Как мне получить все списки в пределах 25 миль и отсортировать их по близости к координатам центра?

1 Ответ

11 голосов
/ 31 марта 2011

Геопространственные $near запросы устанавливают значение по умолчанию limit() из 100 результатов.Вы сможете получить больше результатов, установив новый limit().

. В то время как «ближние» запросы сортируются по расстоянию, «в пределах» нет (хотя «в пределах» не имеет ограничения по умолчанию).

...