MongoDB中的邻近查询的“语义内”

时间:2015-11-26 12:30:37

标签: mongodb geolocation geospatial

我已在集合loc中为字段c定义了“2dsphere”索引:

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

我在c集合中有以下文档。它是[40,5]到[41,6]的一行:

db.c.insert({"name": "myLine", "loc": { type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }})

使用$near运算符,以[40,5]为中心且距离非常小的邻近查询匹配(即返回文档):

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

对于该行中的另一点也是如此:

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

因此,似乎$near具有“相交”语义:如果几何中的某些点位于邻近区域内,则查询匹配。

但是,我想知道是否某种方式指定几何的所有点都必须在邻近区域内。换句话说,类似于$geoWithin运算符之一的语义(据我所知,只有当查询可以表示为GJSON时才可以使用,即不适合圆圈)。

在查看geo spacial queries section in the MongoDB documentation之后,我还没有找到答案......

编辑:有人提到此问题可能与this other重复。但是,我不这么认为,因为提到的问题是询问$ near / $ geoNear / $ geoWithin运算符,而我要求解决邻近查询中的“语义内”问题(无论是否其中一个操作符或其他机制用于解决问题)。另外,引用的问题是关于MultiPoint,而我的例子是基于LineString(尽管这可能是次要方面)。

0 个答案:

没有答案