You can use cursor.sort() to sort by multiple fields (mostly combos) at the same time, but I don't think it works when sorting by document or by subdocument at the same time. If you would sort by two different fields of the top document or by two different fields of the attached document, that would be nice, I think.
This way you can get a similar output using the aggregation structure. All you have to do is split the arrays of the subs field and then sort them.
You can do something like:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
With the above code, you should get a similar result:
{ id: 1, type: 'strs', subs: { time: 1, val: 'ab' } },{ id: 1, type: 'strs', subs: { time: 20, val: 'cs' } },{ id: 1, type: 'strs', subs: { time: 50, val: 'be' } },{ id: 2, type: 'newname', subs: { time: 12, val: 'a' } },{ id: 2, type: 'newname', subs: { time: 20, val: 'b' } },{ id: 2, type: 'newname', subs: { time: 30, val: 'c' } }