Du kan använda cursor.sort()
att sortera på flera fält (i princip en kombination) samtidigt men jag tror inte att det fungerar när man sorterar på både ett dokument och ett underdokumentfält samtidigt. Om du skulle sortera på två olika fält i det översta dokumentet eller på två olika fält i ett underdokument så skulle det vara bra antar jag.
Så du kan få en liknande utdata med aggregation
ramverk. Allt du behöver göra är att i princip bryta ner arrayerna för subs
och sedan sortera
dem.
Du kan göra något som:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Med ovanstående kod bör du få en utdata som liknar denna:
{
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' }
}