Anda dapat menggunakan cursor.sort()
untuk mengurutkan pada beberapa bidang (pada dasarnya kombo) pada saat yang sama tetapi saya tidak berpikir itu berfungsi saat mengurutkan pada dokumen dan bidang subdokumen pada saat yang sama. Jika Anda mengurutkan pada dua bidang berbeda dari dokumen teratas atau pada dua bidang subdokumen yang berbeda maka saya kira akan baik-baik saja.
Jadi Anda bisa mendapatkan hasil serupa menggunakan agregasi
kerangka. Yang harus Anda lakukan pada dasarnya adalah memecah array subs
lalu sort
mereka.
Anda dapat melakukan sesuatu seperti:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Dengan kode di atas Anda akan mendapatkan output yang mirip dengan ini:
{
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' }
}