MongoDB中的地理空间索引对性能没有影响
我试图找出哪些文档位于给定矩形内的地理位置。我有一个Mongo系列,看起来有点像:MongoDB中的地理空间索引对性能没有影响,mongodb,Mongodb,我试图找出哪些文档位于给定矩形内的地理位置。我有一个Mongo系列,看起来有点像: { ... "metadata" : { ... "geometry" : { "type" : "Point", "coordinates" : [ -0.000, 51.477 ] } } } 我的查询如下所示: db.my_coll.find({ "$query" : { "metadata.geometry
{
...
"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};我得到:
i、 在解释时,索引的速度较慢。从外部应用程序进行查询时,无论是否使用索引ms解析,查询时间都没有显著差异。我做错了什么?索引不应该使查询比这个更快吗
谢谢:-不要依赖ms字段作为解释的重要内容。n,nscanned,nscannedObjects更有意义……只是它们的解释比普通的地理空间索引更复杂。我想说的是,对于这个数据量非常小的地理查询,您可能不会看到显著的加速,甚至可能不会看到小的减速。如果扩大文档数量,相对于集合扫描,geoquery的性能是否会提高?
{
"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,
...