Puoi usare cursor.sort()
per ordinare su più campi (fondamentalmente una combinazione) contemporaneamente ma non penso che funzioni quando si ordina contemporaneamente sia un documento che un campo di documento secondario. Se dovessi ordinare su due campi diversi del documento principale o su due diversi campi di un documento secondario, credo che andrebbe bene.
Quindi puoi ottenere un output simile usando l'aggregazione
struttura. Tutto quello che devi fare è fondamentalmente suddividere gli array dei subs
campo e quindi ordina
loro.
Potresti fare qualcosa come:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Con il codice sopra dovresti ottenere un output simile a questo:
{
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' }
}