Você pode usar
cursor.sort()
para classificar em vários campos (basicamente uma combinação) ao mesmo tempo, mas não acho que funcione ao classificar em um documento e em um campo de subdocumento ao mesmo tempo. Se você classificar em dois campos diferentes do documento superior ou em dois campos diferentes de um subdocumento, então seria bom, eu acho. Assim, você pode obter uma saída semelhante usando a agregação estrutura. Tudo o que você precisa fazer é basicamente dividir as matrizes dos
subs
campo e, em seguida, classificar
eles. Você poderia fazer algo como:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Com o código acima, você deve obter uma saída semelhante a esta:
{
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' }
}