Bạn có thể sử dụng cursor.sort()
để sắp xếp trên nhiều trường (về cơ bản là một tổ hợp) cùng một lúc nhưng tôi không nghĩ rằng nó hoạt động khi sắp xếp trên cả tài liệu và trường tài liệu con cùng một lúc. Nếu bạn sắp xếp trên hai trường khác nhau của tài liệu trên cùng hoặc trên hai trường khác nhau của một tài liệu phụ thì tôi đoán sẽ ổn.
Vì vậy, bạn có thể nhận được kết quả tương tự bằng cách sử dụng tổng hợp
khuôn khổ. Tất cả những gì bạn phải làm về cơ bản là chia nhỏ các mảng của subs
rồi đến trường sắp xếp
họ.
Bạn có thể làm điều gì đó như:
db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});
Với đoạn mã trên, bạn sẽ nhận được đầu ra tương tự như sau:
{
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' }
}