Můžete použít cursor.sort()
třídit podle více polí (v podstatě kombo) současně, ale nemyslím si, že to funguje při současném řazení podle dokumentu i pole vnořeného dokumentu. Pokud byste třídili podle dvou různých polí horního dokumentu nebo na dvou různých polích vnořeného dokumentu, pak by to bylo v pořádku, myslím.
Podobný výstup tedy můžete získat pomocí agregace
rámec. Vše, co musíte udělat, je v podstatě rozdělit pole subs
pole a poté seřadit
jim.
Můžete udělat něco jako:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
S výše uvedeným kódem byste měli získat výstup podobný tomuto:
{
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' }
}