-
Type: Question
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: 2.6.3
-
Component/s: Geo
-
None
I'm managing a 10k x 10k planar grid, in which I wish to use a 2d index for distance calculations/queries. For that, each entry in this grid is a document with a 'loc' field with its coordinates. Such coordinates, therefore, are integers between 0 and 9999 inclusive. The index creation needs then to specify a 'min' and a 'max'.
In v2.4, queries on exact coordinates work as expected, returning almost immediately, with nscanned:1:
db.loc_test.find({loc:[23,24]}).explain() { "cursor" : "GeoBrowse-circle", "isMultiKey" : false, "n" : 1, "nscannedObjects" : 1, "nscanned" : 1, "nscannedObjectsAllPlans" : 1, "nscannedAllPlans" : 1, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 0, "nChunkSkips" : 0, ...
After upgrading to v2.6.3, the same query performs a full scan:
db.loc_test.find({loc:[23,24]}).explain() { "cursor" : "BasicCursor", "isMultiKey" : false, "n" : 1, "nscannedObjects" : 6250000, "nscanned" : 6250000, "nscannedObjectsAllPlans" : 6250000, "nscannedAllPlans" : 6250000, "scanAndOrder" : false, "indexOnly" : false, "nYields" : 49010, "nChunkSkips" : 0, "millis" : 32279,
I am not sure 2d indexes on such ranges are actually allowed...