Les
Les

Reputation: 3

Why is MongoDB $geoWithin slow when index is hinted?

I have been struggling with this for some time. I have a collection of over 100,000 documents. Each document has a geoLocation field, that uses GeoJSON format. I added a 2dsphere index to the geoLocation field.

If I run this simple query, it takes almost 1 second to complete:

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

The explain shows:

{
    "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"
}

It doesn't look like the $geoWithin query is using the hinted index. The cursor type is S2Cursor, which seems incorrect. Am I doing anything wrong? This is MongoDB 2.4.3

Thanks, Les

Upvotes: 0

Views: 745

Answers (1)

Related Questions