私はしばらくこれに苦労してきました。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です
ありがとう、レス