为什么mongodb $ geoWithin运算符如此慢

时间:2015-09-03 10:44:13

标签: node.js mongodb database

我想在7500万份文件的集合中找到特定广场内的地理位置。

此查询永远需要: db.tracks.count({"loc":{"$geoWithin":{"$box":[[9.27225895239,41.58687259712],[9.28436304761,41.59586540288]]}}})

当我用{ nLon: { $gt: long2, $lt: long1 }, nLat: { $gt: lat2, $lt: lat1 }替换查询时,只需几秒钟。

这是一个示例文档:

{
  "_id" : ObjectId("55d5d8555df7f55addd16e46"),
  "nLon" : 2,
  "nLat" : 48,
  "loc" : {
    "type" : "Point",
    "coordinates" : [
      2,
      48
    ]
  }
}

纬度/经度有两个索引,loc有一个2dsphere索引:

{
  "v" : 1,
  "key" : {
    "loc" : "2dsphere"
  },
  "name" : "loc_2dsphere",
  "ns" : "locate.tracks",
  "2dsphereIndexVersion" : 2
}

两个查询最终得到完全相同的结果:~4000

我错过了什么吗?或者2dsphere索引对于正方形而言是坏的

mongod --version
db version v3.0.4

0 个答案:

没有答案