2016-07-15 79 views
0

我有一個包含LineString的文檔。是否可以根據一對座標找到並返回LineString中最近的點?

db.paths.find( 
    { 
    loc : { 
     $near : { 
     $geometry : { 
      type : "Point" , 
      coordinates : [-73.965355,40.782865] 
     }, 
     $maxDistance : 20000 
     } 
    } 
); 



// My "path" document 

loc:{ 
    "type": "LineString", 
    "coordinates": [ 
    [-2.551082,48.5955632], 
    [-2.551229,48.594312], 
    [-2.551550,48.593312], 
    [-2.552400,48.592312], 
    [-2.553677, 48.590898] 
    ] 
} 

回答

1

作爲MongoDB的V2.4(目前V3.2)的,LineString是受支持的以GeoJSON對象之一。請參閱GeoSpatial: GeoJSON Objects

創建2dsphere indexloc字段後,即可查詢最近的點。

使用您的示例文件中,蒙戈貝殼查詢將是:

db.paths.find({ 
       location:{ 
        $nearSphere:{ 
          $geometry:{ 
           type:"Point", 
           coordinates:[-2.551010, 48.59123] 
          }, 
        $maxDistance:2000 
        } 
       } 
       }); 

注意$maxDistance以米爲單位。您的示例find()座標遠遠超出您指定的最大距離。

有關v3.2的信息,請參閱$nearSphere$near運營商。

相關問題