summaryrefslogtreecommitdiff
path: root/jstests/core/sort8.js
blob: fa0b0040de11dbb1cc193379da27a8056a609d00 (plain)
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
26
27
28
29
30
// Check sorting of arrays indexed by key SERVER-2884

t = db.jstests_sort8;
t.drop();

t.save({a: [1, 10]});
t.save({a: 5});
unindexedForward = t.find().sort({a: 1}).toArray();
unindexedReverse = t.find().sort({a: -1}).toArray();
t.createIndex({a: 1});
indexedForward = t.find().sort({a: 1}).hint({a: 1}).toArray();
indexedReverse = t.find().sort({a: -1}).hint({a: 1}).toArray();

assert.eq(unindexedForward, indexedForward);
assert.eq(unindexedReverse, indexedReverse);

// Sorting is based on array members, not the array itself.
assert.eq([1, 10], unindexedForward[0].a);
assert.eq([1, 10], unindexedReverse[0].a);

// Now try with a bounds constraint.
t.dropIndexes();
unindexedForward = t.find({a: {$gte: 5}}).sort({a: 1}).toArray();
unindexedReverse = t.find({a: {$lte: 5}}).sort({a: -1}).toArray();
t.createIndex({a: 1});
indexedForward = t.find({a: {$gte: 5}}).sort({a: 1}).hint({a: 1}).toArray();
indexedReverse = t.find({a: {$lte: 5}}).sort({a: -1}).hint({a: 1}).toArray();

assert.eq(unindexedForward, indexedForward);
assert.eq(unindexedReverse, indexedReverse);