This is a bug in the new mongos read path, so it only affects the master branch. It does not affect any stable versions.
The following script reproduces the problem:
(function() {
'use strict';
var st = new ShardingTest({shards: 1});
var sdb = st.s.getDB("test");
var coll = sdb.sortkey_internal_error;
coll.drop();
assert.writeOK(coll.insert({_id: 1, a: 2}));
assert.eq(1, coll.find({_id: 1}).sort({a: 1}).itcount());
st.stop();
})();
Looks like a bad interaction between idhack and sortKey meta-projection.