46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
(function() {
|
|
"use strict";
|
|
|
|
const coll = db.sort4;
|
|
coll.drop();
|
|
|
|
function nice(sort, correct, extra) {
|
|
const c = coll.find().sort(sort);
|
|
let s = "";
|
|
c.forEach(function(z) {
|
|
if (s.length) {
|
|
s += ",";
|
|
}
|
|
s += z.name;
|
|
if (z.prename) {
|
|
s += z.prename;
|
|
}
|
|
});
|
|
if (correct) {
|
|
assert.eq(correct, s, tojson(sort) + "(" + extra + ")");
|
|
}
|
|
return s;
|
|
}
|
|
|
|
assert.commandWorked(coll.insert({name: 'A', prename: 'B'}));
|
|
assert.commandWorked(coll.insert({name: 'A', prename: 'C'}));
|
|
assert.commandWorked(coll.insert({name: 'B', prename: 'B'}));
|
|
assert.commandWorked(coll.insert({name: 'B', prename: 'D'}));
|
|
|
|
nice({name: 1, prename: 1}, "AB,AC,BB,BD", "s3");
|
|
nice({prename: 1, name: 1}, "AB,BB,AC,BD", "s3");
|
|
|
|
assert.commandWorked(coll.insert({name: 'A'}));
|
|
nice({name: 1, prename: 1}, "A,AB,AC,BB,BD", "e1");
|
|
|
|
assert.commandWorked(coll.insert({name: 'C'}));
|
|
nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2"); // SERVER-282
|
|
|
|
assert.commandWorked(coll.ensureIndex({name: 1, prename: 1}));
|
|
nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2ia"); // SERVER-282
|
|
|
|
assert.commandWorked(coll.dropIndexes());
|
|
assert.commandWorked(coll.ensureIndex({name: 1}));
|
|
nice({name: 1, prename: 1}, "A,AB,AC,BB,BD,C", "e2ib"); // SERVER-282
|
|
}());
|