2013-06-02 4 views
0

J'ai lutté avec cela pendant un certain temps. J'ai une collection de plus de 100 000 documents. Chaque document a un champ geoLocation, qui utilise le format GeoJSON. J'ai ajouté un index 2dsphere au champ geoLocation.

Si je lance cette requête simple, il faut presque 1 seconde à compléter:

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

Le EXPLAIN:

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

Il ne ressemble pas à la requête geoWithin $ utilise le indice suggéré. Le type de curseur est S2Cursor, ce qui semble incorrect. Est-ce que je fais quelque chose de mal? Ceci est MongoDB

2.4.3

Merci, Les

+1

Vous utilisez les opérateurs $ avec l'opérateur fonctionnel à nouveau. ..try le fonctionnel 'hint()' – Sammaye

+0

Merci encore :) J'ai fait la même erreur deux fois. – Les

Répondre

Questions connexes