61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
const coll = db[jsTestName()];
|
|
coll.drop();
|
|
|
|
assert.commandWorked(
|
|
coll.insertMany([
|
|
{_id: 1, a: "foo", b: "bar"},
|
|
{_id: 2, a: "feh", b: "baz"},
|
|
{_id: 3, a: "fee", b: "fum"},
|
|
]),
|
|
);
|
|
|
|
const a1 = coll.aggregate({$match: {b: "baz"}});
|
|
|
|
const a1result = [{"_id": 2, "a": "feh", "b": "baz"}];
|
|
|
|
assert.eq(a1.toArray(), a1result, "agg_optimize_sort.a1 failed");
|
|
|
|
const a2 = coll.aggregate({$sort: {a: 1}});
|
|
|
|
const a2result = [
|
|
{"_id": 3, "a": "fee", "b": "fum"},
|
|
{"_id": 2, "a": "feh", "b": "baz"},
|
|
{"_id": 1, "a": "foo", "b": "bar"},
|
|
];
|
|
|
|
assert.eq(a2.toArray(), a2result, "agg_optimize_sort.a2 failed");
|
|
|
|
const a3 = coll.aggregate({$match: {b: "baz"}}, {$sort: {a: 1}});
|
|
|
|
assert.eq(a3.toArray(), a1result, "agg_optimize_sort.a3 failed");
|
|
|
|
assert.commandWorked(coll.createIndex({b: 1}, {name: "agg_optimize_sort_b"}));
|
|
|
|
const a4 = coll.aggregate({$match: {b: "baz"}});
|
|
|
|
assert.eq(a4.toArray(), a1result, "agg_optimize_sort.a4 failed");
|
|
|
|
const a5 = coll.aggregate({$sort: {a: 1}});
|
|
|
|
assert.eq(a5.toArray(), a2result, "agg_optimize_sort.a5 failed");
|
|
|
|
const a6 = coll.aggregate({$match: {b: "baz"}}, {$sort: {a: 1}});
|
|
|
|
assert.eq(a6.toArray(), a1result, "agg_optimize_sort.a6 failed");
|
|
|
|
assert.commandWorked(coll.dropIndex("agg_optimize_sort_b"));
|
|
|
|
assert.commandWorked(coll.createIndex({a: 1}, {name: "agg_optimize_sort_a"}));
|
|
|
|
const a7 = coll.aggregate({$match: {b: "baz"}});
|
|
|
|
assert.eq(a7.toArray(), a1result, "agg_optimize_sort.a7 failed");
|
|
|
|
const a8 = coll.aggregate({$sort: {a: 1}});
|
|
|
|
assert.eq(a8.toArray(), a2result, "agg_optimize_sort.a8 failed");
|
|
|
|
const a9 = coll.aggregate({$match: {b: "baz"}}, {$sort: {a: 1}});
|
|
|
|
assert.eq(a9.toArray(), a1result, "agg_optimize_sort.a9 failed");
|