MongoDB没有正确的2DIndexing

时间:2016-10-18 03:40:21

标签: mongodb indexing query-optimization

我有一个~400k对象的数据集,格式为:

{
    "trip": {
        "type": "Feature",
        "geometry": {
            "type": "LineString",
            "coordinates": [
                [
                    -73.9615,
                    40.6823
                ],
                [
                    -73.9704,
                    40.7849
                ]
            ]
        },
        "properties": {
           ......
        }
    }
}

我尝试在mLab上制作2dsphere索引,如下所示:

{"trip.geometry" : "2dsphere"}

我假设只是打电话:

db.collection.createIndex( {"trip.geometry" : "2dsphere"} )

当我尝试执行$geoWithin查询时(约500次点击):

db.collection.find(
   {
     "trip.geometry": {
       $geoWithin: {
          $geometry: {
             type : "Polygon" ,
             coordinates: [
                            [
                              [-74.0345,40.7267],
                              [-73.9824,40.7174],
                              [-73.9934,40.7105],
                              [-74.0345,40.7267]
                            ]
                          ]
          }
       }
   }}
)

我注意到它很慢,约2秒钟。然后我尝试完全删除索引,时间增加非常轻微。 ~0.5秒。这个查询是否可能没有使用我设置的索引?我included the explain() here

根据我的解释,获胜计划首先根据简单过滤器获取所有数据,然后使用2dindex。鉴于2dindexlat数据没有直接编入索引,我们不应该使用lon开始吗?

0 个答案:

没有答案