summaryrefslogtreecommitdiff
path: root/jstests/core/index/geo/geo2.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/index/geo/geo2.js')
-rw-r--r--jstests/core/index/geo/geo2.js43
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);