2015-02-11 24 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不支持分片集羣 - 你必須使用geonear命令或$geoNear聚集階段,而不是

還檢查了文檔$near$geoWithin

相關問題