Можете да използвате cursor.sort()
за сортиране на множество полета (по същество комбинация) едновременно, но не мисля, че работи, когато сортирате едновременно в поле на документ и поддокумент. Ако трябваше да сортирате в две различни полета на горния документ или на две различни полета на поддокумент, тогава би било добре предполагам.
Така че можете да получите подобен резултат, като използвате обединяване
рамка. Всичко, което трябва да направите, е основно да разбиете масивите от subs
поле и след това сортиране
тях.
Можете да направите нещо като:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
С горния код трябва да получите изход, подобен на този:
{
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' }
}