2015-02-11 2 views
3

В чем разница между $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); 

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

ответ

8

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

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

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

Смежные вопросы