diff options
Diffstat (limited to 'jstests/core/index/geo/geo2.js')
-rw-r--r-- | jstests/core/index/geo/geo2.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/jstests/core/index/geo/geo2.js b/jstests/core/index/geo/geo2.js new file mode 100644 index 00000000000..34588acac9e --- /dev/null +++ b/jstests/core/index/geo/geo2.js @@ -0,0 +1,43 @@ +// @tags: [ +// operations_longer_than_stepdown_interval_in_txns, +// requires_fastcount, +// ] + +t = db.geo2; +t.drop(); + +n = 1; +arr = []; +for (var x = -100; x < 100; x += 2) { + for (var y = -100; y < 100; y += 2) { + arr.push({_id: n++, loc: [x, y]}); + } +} +t.insert(arr); +assert.eq(t.count(), 100 * 100); +assert.eq(t.count(), n - 1); + +t.createIndex({loc: "2d"}); + +function a(cur) { + var total = 0; + var outof = 0; + while (cur.hasNext()) { + var o = cur.next(); + total += Geo.distance([50, 50], o.loc); + outof++; + } + return total / outof; +} + +assert.close(1.33333, a(t.find({loc: {$near: [50, 50]}}).limit(3)), "B2"); + +printjson(t.find({loc: {$near: [50, 50]}}).explain()); + +assert.lt(3, a(t.find({loc: {$near: [50, 50]}}).limit(50)), "C1"); +assert.gt(3, a(t.find({loc: {$near: [50, 50, 3]}}).limit(50)), "C2"); +assert.gt(3, a(t.find({loc: {$near: [50, 50], $maxDistance: 3}}).limit(50)), "C3"); + +// SERVER-8974 - test if $geoNear operator works with 2d index as well +var geoNear_cursor = t.find({loc: {$geoNear: [50, 50]}}).limit(100); +assert.eq(geoNear_cursor.count(true), 100); |