Mongodb: $ geoNear vs $ nearSphere на огромной неосколенной коллекции: производительность? - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть коллекция данных, содержащая десятки миллионов записей GeoJSON, и операция, которую я буду выполнять очень часто, - это выбор всех точек определенного типа в пределах предопределенной области.База данных не защищена.Области не круглые, но они полностью выпуклые, и для каждого я знаю центроид и максимальный радиус.Ни одна из них не имеет более 8 вершин.

Итак: Предположим, что я совершенно счастлив, извлекая все в пределах окружающего круга региона, а не только строго в пределах его точной геометрии, для меня будет более эффективным использовать $nearSphere запрос на центроид и радиус (а затем обрезать ненужные точки на стороне клиента), или я должен придерживаться $geoWithin на фактической геометрии?Даже небольшое улучшение будет весьма уместным, учитывая частоту выполнения этих запросов.

1 Ответ

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

$geoWithin значительно быстрее, чем $nearSphere.

В зависимости от вашего варианта использования может быть лучше получить все объекты в пределах геометрии из БД, а затем отсортировать результат по расстоянию за пределамиDB.

...