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

Mongo phân loại phức tạp?

CẬP NHẬT: Câu trả lời này dường như đã lỗi thời; Có vẻ như việc sắp xếp tùy chỉnh ít nhiều có thể đạt được bằng cách sử dụng $project chức năng của đường ống tổng hợp để chuyển đổi các tài liệu đầu vào trước khi phân loại. Xem thêm câu trả lời của @ Ari.

Tôi không nghĩ rằng điều này là có thể trực tiếp; tài liệu sắp xếp chắc chắn không đề cập đến bất kỳ cách nào để cung cấp chức năng so sánh tùy chỉnh.

Có lẽ tốt nhất bạn nên thực hiện việc sắp xếp trong máy khách, nhưng nếu bạn thực sự quyết tâm thực hiện việc đó trên máy chủ, bạn có thể sử dụng db.eval() sắp xếp để chạy sắp xếp trên máy chủ (nếu máy khách của bạn hỗ trợ nó).

Sắp xếp phía máy chủ:

db.eval(function() { 
  return db.scratch.find().toArray().sort(function(doc1, doc2) { 
    return doc1.a - doc2.a 
  }) 
});

So với sắp xếp phía máy khách tương đương:

db.scratch.find().toArray().sort(function(doc1, doc2) { 
  return doc1.a - doc2.b 
});

Lưu ý rằng bạn cũng có thể sắp xếp thông qua đường dẫn tổng hợp và theo $orderby toán tử (tức là ngoài .sort() ) tuy nhiên cả hai cách này đều không cho phép bạn cung cấp chức năng sắp xếp tùy chỉnh.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Chỉ mục duy nhất trên thuộc tính của phần tử mảng

  2. Cách sử dụng kết hợp $ unset và $ set trong mongoDB

  3. Lệnh MongoDB dropIndexes

  4. Làm cách nào để sắp xếp bộ sưu tập Sao băng theo thời gian chèn?

  5. Hãy để ClusterControl mới bảo mật cho việc triển khai MongoDB của bạn