MongoDB中的地理空间索引对性能没有影响

时间:2015-01-15 17:28:03

标签: mongodb

我试图找到哪个文档位于给定矩形内的地理位置。我有一个Mongo系列看起来有点像:

{
    ...
    "metadata" : {
        ...
        "geometry" : { "type" : "Point", "coordinates" : [ -0.000, 51.477 ] }
    }
}

我的查询如下:

db.my_coll.find({ "$query" : { 
                    "metadata.geometry" : { 
                        "$geoIntersects" : { 
                            "$geometry" : { "type" : "Polygon", "coordinates" : [ [ [..., ...], ... ] ] }
} } }, "$explain":1})

没有地理空间索引我得到:

{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 646,
"nscannedObjects" : 19539,
"nscanned" : 19539,
"nscannedObjectsAllPlans" : 19539,
"nscannedAllPlans" : 19539,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 152,
"nChunkSkips" : 0,
"millis" : 125,
...

使用地理空间索引db.my_coll.ensureIndex({"metadata.geometry" : "2dsphere"});,我得到:

{
"cursor" : "BtreeCursor metadata.geometry_2dsphere",
"isMultiKey" : false,
"n" : 646,
"nscannedObjects" : 18726,
"nscanned" : 18727,
"nscannedObjectsAllPlans" : 18726,
"nscannedAllPlans" : 18727,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 146,
"nChunkSkips" : 0,
"millis" : 161,
...
在解释时,使用索引 更慢。从外部应用程序查询显示,无论是否具有索引(ms分辨率),查询时间都没有显着差异。我究竟做错了什么?索引不应该使查询比这更快吗?

谢谢: - )

0 个答案:

没有答案