【问题标题】:mongodb min/maxDistance on near command附近命令上的 mongodb min/maxDistance
【发布时间】:2016-06-28 16:21:38
【问题描述】:

在集合上使用近查询时遇到了几个问题。

我正在使用 2dsphere 索引,想靠近一些地方并进行分页。 我注意到的第一件事是偏移量在附近不起作用。所以这应该很容易用 min/maxDistance 模拟

但我不知道如何使工作查询 minDistance 或 maxDistance 似乎不起作用。

以下是我正在使用的命令:

db.Place.runCommand({ "geoNear": "Place", "near": [ 49, 14 ], "spherical": true, "query": [ ], "distanceMultiplier": 6378.137, "minDistance": 60 });
db.Place.runCommand({ "geoNear": "Place", "near": [ 49, 14 ], "spherical": true, "query": [ ], "distanceMultiplier": 6378.137 });
db.Place.runCommand({ "geoNear": "Place", "near": [ 49, 14 ], "spherical": true, "query": [ ], "distanceMultiplier": 6378.137, "maxDistance": 60 });
  1. 什么时候设置 minDistace 将输出 0 结果,我输入什么数字都没有关系。同样在 stats 中是 nscanned 1,这是错误的,应该是 299,这是索引中的文档数。

  2. 和 3. 将输出完全相同的 100 个结果(当序列化实体很大并且我不需要的 100 个结果很慢时,这也是问题)并且 nscanned 是 299。

这是我的索引:

{ 
    "v" : 1, 
    "name" : "coordinates_2dsphere", 
    "ns" : "mydb.Place", 
    "sparse" : false, 
    "2dsphereIndexVersion" : 3
}

我正在使用 DoctrineODM 和 mongodb 3.2.6

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    发现此查询仅在使用 GeoJson 点时有效。

    文档另有说明:( https://docs.mongodb.com/manual/reference/operator/query/near/#op._S_near

    这是有效的命令:

    db.Place.runCommand({ "geoNear": "Place", "near": { "type": "Point", "coordinates": [ 49, 14 ] }, "spherical": true, "query": [ ], "distanceMultiplier": 0.001, "maxDistance": 70000, "minDistance": 10000 });
    

    唯一的区别是 GeoJson 以米为单位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 2011-11-28
      • 1970-01-01
      • 2017-07-04
      • 2011-12-11
      相关资源
      最近更新 更多