MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách sắp xếp kết quả truy vấn mongodb dựa trên tài liệu con

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' }
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chèn tài liệu vào MongoDB chỉ khi tất cả các trường là duy nhất

  2. Cách khắc phục MongoError:Không thể sử dụng phiên đã kết thúc

  3. Tính nguyên tử, cô lập và đồng thời trong MongoDB

  4. Các chỉ mục MongoDB có liên tục khi khởi động lại không?

  5. Thực thi ánh xạ kiểu với mgo