为什么我做一个2dsphere索引,但当我查询它显示s2cursor?

时间:2013-11-14 04:11:10

标签: mongodb indexing 2d 2dsphere

为什么我创建一个2dsphere索引,但当我查询它显示s2cursor时,我认为它应该是geosearchcursor。 mongodb文件说: http://docs.mongodb.org/manual/reference/method/cursor.explain/#explain-output-fields-core

  

cursor是一个字符串,用于报告查询使用的游标类型   操作:

     

BasicCursor表示完整的集合扫描。 BtreeCursor表示   该查询使用了索引。游标包括索引的名称。   当查询使用索引时,explain()的输出包括   indexBounds详细信息。 GeoSearchCursor表示查询使用了   地理空间索引。

我的文件:

{
    "_id" : "b2lblohv6qvcwzd6o2pcqep8v0",
    "eventid" : "b2lblohv6qvcwzd6o2pcqep8v0",
    "loc" : {
        "type" : "Point",
        "coordinates" : [
            -122.4127337,
            37.7709975
        ]
    },
    "end" : 1379399400,
    "start" : 1379392200,
}

这是我的mongodb shell输出:

> db.collection_ca1.ensureIndex({'loc':'2dsphere'})

> db.collection_ca1.find({'loc':{'$geoWithin':{'$centerSphere':[[-118.397264,34.019763], 0.00001]}}}).explain()
{
    "cursor" : "S2Cursor",
    "isMultiKey" : true,
    "n" : 1979,
    "nscannedObjects" : 1979,
    "nscanned" : 25482,
    "nscannedObjectsAllPlans" : 1979,
    "nscannedAllPlans" : 25482,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 6,
    "nChunkSkips" : 0,
    "millis" : 12215,
    "indexBounds" : {

    },
    "nscanned" : 25482,
    "matchTested" : NumberLong(23503),
    "geoTested" : NumberLong(23503),
    "cellsInCover" : NumberLong(1),
    "server" : "localhost:27017"
}

1 个答案:

答案 0 :(得分:1)

2.4中添加的'2dsphere'索引尚未更新该文档。

S2Cursor是对'2dsphere'索引的优化搜索。

您应该向DOCS项目提交Jira票证以更新它:https://jira.mongodb.org/browse/DOCS