邻近查询不匹配两端之间的LineString点

时间:2015-11-26 21:48:27

标签: mongodb geolocation geospatial

我定义了一个" 2dsphere"集合loc中字段c的索引:

db.c.createIndex( { loc : "2dsphere" } )

我在c集合中有以下文档。它是从[0,0]到[10,10]的LineString:

db.c.insert({"name": "myLine", "loc": { type: "LineString", coordinates: [ [ 0, 0 ], [ 10, 10 ] ] }})

注意[5,5]将是一个点。但是,以[5,5]为中心的邻近查询(使用$near运算符)与文档不匹配:

db.c.find({
  loc: {
    $near: {
      $geometry: {
         type: "Point" ,
         coordinates: [ 5, 5 ]
       },
       $maxDistance: 0.1,
    } 
  } 
})

也许LineString不会那样工作,只有端点(在这种情况下为[0,0]和[10,10])从地理空间查询的角度来看是否相关?在这种情况下,是MongoDB中的限制geo spacial queries implementation还是GJSON standard中的限制?

(直到我做了这个小实验,我认为LineString和MultiPoint之间的区别在于前者考虑了连接点的线,而后者只考虑了线末端的点。在这个实验之后,我没有看到差异......)。

1 个答案:

答案 0 :(得分:1)

我必须在mongodb和postgis之间选择。但是mongodb有这个负面观点。请参阅案例:Find points near LineString in mongodb sorted by distance