0
0
mirror of https://github.com/mongodb/mongo.git synced 2024-12-01 09:32:32 +01:00
mongodb/jstests/sharding/shard7.js
Kyle Suarez 7bc7864fc0 SERVER-35043, SERVER-22949: move geoNear implementation into aggregation
This commit removes the geoNear command and moves its implementation
into the aggregation framework. Users should use the aggregate command
with a $geoNear stage.

The implementation rewrite additionally removes the limit in the
$geoNear aggregation stage. To limit the number of results, use a $limit
stage.
2018-06-18 23:34:49 -04:00

57 lines
1.8 KiB
JavaScript

// Check that shard selection does not assert for certain unsatisfiable queries.
// SERVER-4554, SERVER-4914
s = new ShardingTest({name: 'shard7', shards: 2});
db = s.admin._mongo.getDB('test');
c = db['foo'];
c.drop();
s.adminCommand({enablesharding: '' + db});
s.ensurePrimaryShard(db.getName(), s.shard1.shardName);
s.adminCommand({shardcollection: '' + c, key: {a: 1, b: 1}});
// Check query operation with some satisfiable and unsatisfiable queries.
assert.eq(0, c.find({a: 1}).itcount());
assert.eq(0, c.find({a: 1, b: 1}).itcount());
assert.eq(0, c.find({a: {$gt: 4, $lt: 2}}).itcount());
assert.eq(0, c.find({a: 1, b: {$gt: 4, $lt: 2}}).itcount());
assert.eq(0, c.find({a: {$gt: 0, $lt: 2}, b: {$gt: 4, $lt: 2}}).itcount());
assert.eq(0, c.find({b: {$gt: 4, $lt: 2}}).itcount());
assert.eq(0, c.find({a: {$in: []}}).itcount());
assert.eq(0, c.find({a: 1, b: {$in: []}}).itcount());
assert.eq(0, c.find({$or: [{a: {$gt: 0, $lt: 10}}, {a: 12}]}).itcount());
assert.eq(0, c.find({$or: [{a: {$gt: 0, $lt: 10}}, {a: 5}]}).itcount());
assert.eq(0, c.find({$or: [{a: 1, b: {$gt: 0, $lt: 10}}, {a: 1, b: 5}]}).itcount());
// Check other operations that use getShardsForQuery.
unsatisfiable = {
a: 1,
b: {$gt: 4, $lt: 2}
};
assert.eq(0, c.count(unsatisfiable));
assert.eq([], c.distinct('a', unsatisfiable));
aggregate = c.aggregate({$match: unsatisfiable});
assert.eq(0, aggregate.toArray().length);
c.save({a: null, b: null});
c.save({a: 1, b: 1});
assert.writeOK(c.remove(unsatisfiable));
assert.eq(2, c.count());
assert.writeOK(c.update(unsatisfiable, {$set: {c: 1}}, false, true));
assert.eq(2, c.count());
assert.eq(0, c.count({c: 1}));
c.ensureIndex({loc: '2d'});
c.save({a: 2, b: 2, loc: [0, 0]});
near =
c.aggregate({$geoNear: {near: [0, 0], query: unsatisfiable, distanceField: "dist"}}).toArray();
assert.eq(0, near.length, tojson(near));
s.stop();