U kunt cursor.sort()
. gebruiken om op meerdere velden (eigenlijk een combo) tegelijk te sorteren, maar ik denk niet dat het werkt als u tegelijkertijd op zowel een document als een subdocumentveld sorteert. Als u op twee verschillende velden van het bovenste document zou sorteren of op twee verschillende velden van een subdocument, dan zou het goed zijn, denk ik.
U kunt dus een vergelijkbare uitvoer krijgen met behulp van de aggregatie
kader. Het enige dat u hoeft te doen, is in feite de arrays van de subs
afbreken veld en vervolgens sorteren
hen.
Je zou iets kunnen doen als:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Met de bovenstaande code zou je een uitvoer moeten krijgen die lijkt op deze:
{
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' }
}