32 lines
1.3 KiB
JavaScript
32 lines
1.3 KiB
JavaScript
// Was reported as SERVER-1283.
|
|
// The problem seems to be that sometimes the index btrees are such that
|
|
// the first search for a matching point in the geo code could run to
|
|
// the end of the btree and not reverse direction (leaving the rest of
|
|
// the search always looking at some random non-matching point).
|
|
|
|
t = db.geo_box;
|
|
t.drop();
|
|
|
|
t.insert({"_id": 1, "geo": [33, -11.1]});
|
|
t.insert({"_id": 2, "geo": [-122, 33.3]});
|
|
t.insert({"_id": 3, "geo": [-122, 33.4]});
|
|
t.insert({"_id": 4, "geo": [-122.28, 37.67]});
|
|
t.insert({"_id": 5, "geo": [-122.29, 37.68]});
|
|
t.insert({"_id": 6, "geo": [-122.29, 37.67]});
|
|
t.insert({"_id": 7, "geo": [-122.29, 37.67]});
|
|
t.insert({"_id": 8, "geo": [-122.29, 37.68]});
|
|
t.insert({"_id": 9, "geo": [-122.29, 37.68]});
|
|
t.insert({"_id": 10, "geo": [-122.3, 37.67]});
|
|
t.insert({"_id": 11, "geo": [-122.31, 37.67]});
|
|
t.insert({"_id": 12, "geo": [-122.3, 37.66]});
|
|
t.insert({"_id": 13, "geo": [-122.2435, 37.637072]});
|
|
t.insert({"_id": 14, "geo": [-122.289505, 37.695774]});
|
|
|
|
t.ensureIndex({geo: "2d"});
|
|
|
|
c = t.find({geo: {"$within": {"$box": [[-125.078461, 36.494473], [-120.320648, 38.905199]]}}});
|
|
assert.eq(11, c.count(), "A1");
|
|
|
|
c = t.find({geo: {"$within": {"$box": [[-124.078461, 36.494473], [-120.320648, 38.905199]]}}});
|
|
assert.eq(11, c.count(), "B1");
|