1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
// Check that a projection is applied after an in memory sort.
t = db.jstests_sorti;
t.drop();
t.save({a: 1, b: 0});
t.save({a: 3, b: 1});
t.save({a: 2, b: 2});
t.save({a: 4, b: 3});
function checkBOrder(query) {
arr = query.toArray();
order = [];
for (i in arr) {
a = arr[i];
order.push(a.b);
}
assert.eq([0, 2, 1, 3], order);
}
checkBOrder(t.find().sort({a: 1}));
checkBOrder(t.find({}, {_id: 0, b: 1}).sort({a: 1}));
t.ensureIndex({b: 1});
checkBOrder(t.find({}, {_id: 0, b: 1}).sort({a: 1}));
checkBOrder(t.find({}, {_id: 0, b: 1}).sort({a: 1}).hint({b: 1}));
|