Du kan bruge cursor.sort()
at sortere på flere felter (dybest set en kombination) på samme tid, men jeg tror ikke, det virker, når du sorterer på både et dokument og et underdokumentfelt på samme tid. Hvis du skulle sortere på to forskellige felter i det øverste dokument eller på to forskellige felter i et underdokument, så ville det nok være fint.
Så du kan få et lignende output ved hjælp af aggregation
rammer. Alt du skal gøre er grundlæggende at nedbryde arrays af subs
felt og derefter sortér
dem.
Du kunne gøre noget som:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Med ovenstående kode skulle du få et output svarende til dette:
{
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' }
}