0

我已经为此苦苦挣扎了一段时间。我收集了超过 100,000 份文档。每个文档都有一个使用 GeoJSON 格式的 geoLocation 字段。我在 geoLocation 字段中添加了一个 2dsphere 索引。

如果我运行这个简单的查询,大约需要 1 秒才能完成:

db.guestBookPost.find({"geoLocation" : { "$geoWithin" : {$centerSphere:[[-118.3688331113197 , 34.1620417429723], .00068621014493]}}, $hint:"geoLocation_2dsphere"}).limit(10)

解释显示:

{
    "cursor" : "S2Cursor",
    "isMultiKey" : true,
    "n" : 0,
    "nscannedObjects" : 0,
    "nscanned" : 100211,
    "nscannedObjectsAllPlans" : 0,
    "nscannedAllPlans" : 100211,
    "scanAndOrder" : false,
    "indexOnly" : false,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "millis" : 910,
    "indexBounds" : {

    },
    "nscanned" : 100211,
    "matchTested" : NumberLong(100211),
    "geoTested" : NumberLong(0),
    "cellsInCover" : NumberLong(8),
    "server" : "ip-10-245-26-151:27017"
}

$geoWithin 查询似乎没有使用提示索引。游标类型是 S2Cursor,看起来不正确。我做错什么了吗?这是 MongoDB 2.4.3

谢谢,莱斯

4

1 回答 1

1

s2cursor 是 2dsphere 索引,你可以看看这个:

http://blog.mongodb.org/post/50984169045/new-geo-features-in-mongodb-2-4?mkt_tok=3RkMMJWWfF9wsRovs67NZKXonjHpfsX74%2BktX6C1lMI%2F0ER3fOvrPUfGjI4JS8FnI%2BSLDwEYGJIUhIhI%D

于 2013-11-14T02:45:42.950 回答