summaryrefslogtreecommitdiff
path: root/jstests/core/index/geo/geo_circle1_noindex.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/index/geo/geo_circle1_noindex.js')
-rw-r--r--jstests/core/index/geo/geo_circle1_noindex.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/jstests/core/index/geo/geo_circle1_noindex.js b/jstests/core/index/geo/geo_circle1_noindex.js
new file mode 100644
index 00000000000..4e1b8ed9e5f
--- /dev/null
+++ b/jstests/core/index/geo/geo_circle1_noindex.js
@@ -0,0 +1,39 @@
+// SERVER-7343: allow $within without a geo index.
+
+(function() {
+'use strict';
+
+const t = db.geo_circle1_noindex;
+t.drop();
+
+const searches = [
+ [[5, 5], 3],
+ [[5, 5], 1],
+ [[5, 5], 5],
+ [[0, 5], 5],
+];
+let correct = searches.map(function(z) {
+ return [];
+});
+
+let num = 0;
+
+let docs = [];
+for (let x = 0; x <= 20; x++) {
+ for (let y = 0; y <= 20; y++) {
+ const o = {_id: num++, loc: [x, y]};
+ docs.push(o);
+ for (let i = 0; i < searches.length; i++)
+ if (Geo.distance([x, y], searches[i][0]) <= searches[i][1])
+ correct[i].push(o);
+ }
+}
+assert.commandWorked(t.insert(docs));
+
+for (let i = 0; i < searches.length; i++) {
+ const q = {loc: {$within: {$center: searches[i]}}};
+ assert.eq(correct[i].length, t.find(q).itcount(), "itcount : " + tojson(searches[i]));
+ assert.eq(correct[i].length, t.find(q).count(), "count : " + tojson(searches[i]));
+ assert.eq(correct[i].length, t.countDocuments(q), "aggregation : " + tojson(searches[i]));
+}
+})();