Sie können cursor.sort()
verwenden nach mehreren Feldern (im Grunde ein Kombinationsfeld) gleichzeitig zu sortieren, aber ich glaube nicht, dass es funktioniert, wenn gleichzeitig nach einem Dokument und einem Unterdokumentfeld sortiert wird. Wenn Sie nach zwei verschiedenen Feldern des obersten Dokuments sortieren würden oder auf zwei verschiedenen Feldern eines Filialdokuments, dann wäre es in Ordnung, denke ich.
Sie können also eine ähnliche Ausgabe mit der Aggregation
erhalten Rahmen. Alles, was Sie tun müssen, ist im Grunde die Arrays der subs
aufzuschlüsseln Feld und dann sortieren
Sie.
Sie könnten so etwas tun:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Mit dem obigen Code sollten Sie eine Ausgabe ähnlich dieser erhalten:
{
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' }
}