t = db.sort6; function get(x) { return t.find().sort({c: x}).map(function(z) { return z._id; }); } // part 1 t.drop(); t.insert({_id: 1, c: null}); t.insert({_id: 2, c: 1}); t.insert({_id: 3, c: 2}); assert.eq([3, 2, 1], get(-1), "A1"); // SERVER-635 assert.eq([1, 2, 3], get(1), "A2"); t.ensureIndex({c: 1}); assert.eq([3, 2, 1], get(-1), "B1"); assert.eq([1, 2, 3], get(1), "B2"); // part 2 t.drop(); t.insert({_id: 1}); t.insert({_id: 2, c: 1}); t.insert({_id: 3, c: 2}); assert.eq([3, 2, 1], get(-1), "C1"); // SERVER-635 assert.eq([1, 2, 3], get(1), "C2"); t.ensureIndex({c: 1}); assert.eq([3, 2, 1], get(-1), "D1"); assert.eq([1, 2, 3], get(1), "X2");