48 lines
1.7 KiB
JavaScript
48 lines
1.7 KiB
JavaScript
// 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);
|