Vous pouvez utiliser cursor.sort()
pour trier sur plusieurs champs (essentiellement un combo) en même temps, mais je ne pense pas que cela fonctionne lors du tri à la fois sur un document et un champ de sous-document en même temps.Si vous deviez trier sur deux champs différents du document supérieur ou sur deux champs différents d'un sous-document, alors ce serait bien, je suppose.
Ainsi, vous pouvez obtenir une sortie similaire en utilisant l'aggregation
cadre. Tout ce que vous avez à faire est de décomposer les tableaux des subs
puis sort
leur.
Vous pourriez faire quelque chose comme :
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Avec le code ci-dessus, vous devriez obtenir une sortie similaire à celle-ci :
{
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' }
}