summaryrefslogtreecommitdiff
path: root/jstests/core/geo_s2explain.js
diff options
context:
space:
mode:
authorBrandon Zhang <brandonzhang@Brandons-MacBook-Pro-2.local>2015-06-11 10:22:37 -0400
committerSiyuan Zhou <siyuan.zhou@mongodb.com>2015-06-17 13:40:32 -0400
commit438c694cbd3ee368430ba7b95b9be6765217f514 (patch)
treed71fdbbac2b5295a2baaf438af5fdb51a056ed5d /jstests/core/geo_s2explain.js
parent449e0f2b47e32060433cb6f68d967ea53c8573d1 (diff)
downloadmongo-438c694cbd3ee368430ba7b95b9be6765217f514.tar.gz
SERVER-18830 Fixed explain output for geoNear
Closes #987 Signed-off-by: Siyuan Zhou <siyuan.zhou@mongodb.com>
Diffstat (limited to 'jstests/core/geo_s2explain.js')
-rw-r--r--jstests/core/geo_s2explain.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/jstests/core/geo_s2explain.js b/jstests/core/geo_s2explain.js
new file mode 100644
index 00000000000..e5035713e38
--- /dev/null
+++ b/jstests/core/geo_s2explain.js
@@ -0,0 +1,47 @@
+// Test to check whether the number of intervals in a geoNear query equals
+// the number of inputStages it completes
+
+var t = db.jstests_geo_s2explain;
+t.drop();
+
+var point1 = { loc : { type : "Point", coordinates : [10, 10] } };
+var point2 = { loc : { type : "Point", coordinates : [10.001, 10] } };
+assert.writeOK( t.insert( [ point1, point2] ) );
+
+assert.commandWorked( t.ensureIndex( { loc : "2dsphere"} ) );
+
+var explain = t.find( {
+ loc: { $nearSphere : { type : "Point", coordinates : [10, 10] } }
+ } ).limit(1).explain("executionStats");
+var inputStage = explain.executionStats.executionStages.inputStage;
+
+assert.eq( 1, inputStage.searchIntervals.length );
+
+// Populates the collection with a few hundred points at varying distances
+var points = [];
+for ( var i = 10; i < 70; i+=0.1 ) {
+ points.push({ loc : { type : "Point", coordinates : [i, i] } });
+}
+
+assert.writeOK( t.insert( points ) );
+
+explain = t.find( {
+ loc: { $nearSphere : { type : "Point", coordinates : [10, 10] } }
+ } ).limit(10).explain("executionStats");
+inputStage = explain.executionStats.executionStages.inputStage;
+
+assert.eq( inputStage.inputStages.length, inputStage.searchIntervals.length );
+
+explain = t.find( {
+ loc: { $nearSphere : { type : "Point", coordinates : [10, 10] } }
+ } ).limit(50).explain("executionStats");
+inputStage = explain.executionStats.executionStages.inputStage;
+
+assert.eq( inputStage.inputStages.length, inputStage.searchIntervals.length );
+
+explain = t.find( {
+ loc: { $nearSphere : { type : "Point", coordinates : [10, 10] } }
+ } ).limit(200).explain("executionStats");
+inputStage = explain.executionStats.executionStages.inputStage;
+
+assert.eq( inputStage.inputStages.length, inputStage.searchIntervals.length );