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

MongoDB中邻近查询的“语义内”,mongodb,geolocation,geospatial,Mongodb,Geolocation,Geospatial,我已经为集合c中的字段loc定义了一个2dsphere索引: 我在c集合中有以下文档。这是一条从[40,5]到[41,6]的线: db.c.insert({"name": "myLine", "loc": { type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }}) 使用运算符,以[40,5]为中心且半径非常小的邻近查询匹配,即返回文档: db.c.find({ loc: { $near: { $geom

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

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

db.c.insert({"name": "myLine", "loc": { type: "LineString", coordinates: [ [ 40, 5 ], [ 41, 6 ] ] }})
使用运算符,以[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似乎具有相交语义:如果几何体的某些点位于邻近区域内,则查询匹配

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

在看了之后,我还没有找到答案


编辑:有人提到,这个问题可能是重复的。但是,我不这么认为,因为所提到的问题是询问$near/$geoNear/$geoinsin操作符,而我要求解决邻近查询中的内部语义问题,无论是否使用这些操作符或其他机制之一来解决问题。此外,提到的问题是关于多点的,而我的示例是基于LineString的,尽管这可能是次要方面。

可能的重复不完全是重复的,但可能是子集。。。因此,让我们看看SOF社区是怎么想的,如果结果是因为重复而关闭这个问题,我觉得没问题:仔细看,我不认为这是同一个问题,因为引用的问题是关于$near/$geoNear/$geoNear操作员的问题,当我要求解决邻近查询中的内部语义问题时,不管是否使用这些操作符或其他机制来解决这个问题。此外,提到的问题是关于多点的,而我的示例是基于LineString的,尽管这可能是第二个方面。我想在问题帖的正文中澄清一下。当然是同一个问题,或者至少是同一个答案。你是在问我能不能这样做,答案是否定的,并解释了每种情况的原因。
db.c.find({
  loc: {
    $near: {
      $geometry: {
         type: "Point" ,
         coordinates: [ 41, 6 ]
       },
       $maxDistance: 0.0001,
    } 
  } 
})