Możesz użyć cursor.sort()
sortować na wielu polach (w zasadzie kombi) w tym samym czasie, ale nie sądzę, aby działało to podczas sortowania zarówno w dokumencie, jak i w polu poddokumentu w tym samym czasie. Gdybyś miał sortować na dwóch różnych polach górnego dokumentu lub na dwóch różnych polach poddokumentu, to chyba byłoby dobrze.
Możesz więc uzyskać podobny wynik, używając agregacji
struktura. Wszystko, co musisz zrobić, to w zasadzie rozbić tablice subs
pole, a następnie sortowanie
ich.
Możesz zrobić coś takiego:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Z powyższym kodem powinieneś otrzymać wynik podobny do tego:
{
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' }
}