MongoDB Проблема с геопространственными запросами (всегда 100) - PullRequest
2 голосов
/ 01 июля 2011

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

db.locations.find({"loc":{$nearSphere:[50, 50]}}).limit(1000).count()

Я понимаю, что ограничение размера по умолчанию для запроса, использующего синтаксис «ближний», равно 100, но, похоже, вы не можетевернуть больше, чем это.Я делаю что-то не так или есть обходной путь для этого?

Ответы [ 3 ]

2 голосов
/ 03 июля 2012

Попробуйте «внутри» вместо «рядом». Это работает для меня,

center = [50, 50];
radius = 1/111.12; //convert it to KM.

db.places.count({"loc" : {"$within" : {"$center" : [center, radius]}}})

Я нашел это в https://jira.mongodb.org/browse/SERVER-856

0 голосов
/ 19 марта 2013

Это не проблема с запросом монго.Попробуйте использовать cursor.size (), а не cursor.count ().Количество не учитывает ограничение размера.Поэтому, если вы используете .size () вместо count (), вы должны получить распечатку с правильным количеством возвращаемых элементов.

Проверьте это переполнение стека Q и A для ясного решения вашей проблемы. Разница между cursor.count () и cursor.size () в MongoDB

0 голосов
/ 14 июля 2011

Для чего бы это ни стоило, даже несмотря на то, что число, сообщаемое для курсора, равно 100 (независимо от того, какое ограничение вы даете на запрос, даже «10»), вы фактически получаете «предельное» количество результатов обратно при выполнении запроса. .

Вот ссылка на проблему, в которой утверждается, что она не сломана:

Надеюсь, это поможет!

...