cursor.sort()
を使用できます 複数のフィールド(基本的にはコンボ)を同時に並べ替えるが、ドキュメントとサブドキュメントの両方のフィールドを同時に並べ替える場合は機能しないと思います。トップドキュメントの2つの異なるフィールドで並べ替える場合または、サブドキュメントの2つの異なるフィールドで、それで問題ないと思います。
したがって、集計
を使用して同様の出力を取得できます。 フレームワーク。あなたがしなければならないのは基本的にsubs
の配列を分解することです フィールドに移動してから、 sort
彼ら。
次のようなことができます:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
上記のコードを使用すると、次のような出力が得られるはずです。
{
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' }
}