Географическая разница MongoDB между $near и $в пределах

В чем разница между $near и $within?

db.geodata.find({ "loc" : { "$within" : { "$center" : [ [ 12.91365 , 77.59395] , 4]}}}).limit(10);
db.geodata.find({ "loc" : { "$near" : [ 12.91365 , 77.59395] , "$maxDistance" : 4}}).limit(10);

Может ли кто-нибудь объяснить подробно?

1 ответ

Основные отличия

  • $near сортируется на основе расстояния от точки; $geoWithin тесты для локализации в многоугольнике или мультиполигоне с координатами GeoJSON или сдерживание в одном из набора фигур для 2d-координат
  • $near возвращает документ от ближайшего к самому дальнему, и любой другой порядок требует сортировки в памяти; $geoWithin может использоваться с другими индексами сортировки
  • $near требуется геопространственный индекс; $geoWithin работает лучше с одним, но не требует его
  • $near не поддерживается в закрытых кластерах - вместо этого вы должны использовать команду geonear или этап агрегации $geoNear

Также проверьте документацию $near и $geoWithin.

licensed under cc by-sa 3.0 with attribution.