diff options
author | Brandon Zhang <brandonzhang@Brandons-MacBook-Pro-2.local> | 2015-06-11 10:22:37 -0400 |
---|---|---|
committer | Siyuan Zhou <siyuan.zhou@mongodb.com> | 2015-06-17 13:40:32 -0400 |
commit | 438c694cbd3ee368430ba7b95b9be6765217f514 (patch) | |
tree | d71fdbbac2b5295a2baaf438af5fdb51a056ed5d /jstests/core/geo_s2explain.js | |
parent | 449e0f2b47e32060433cb6f68d967ea53c8573d1 (diff) | |
download | mongo-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.js | 47 |
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 ); |