Bạn có thể muốn sử dụng db.eval
nếu bạn quyết tâm thực hiện việc này ở phía cơ sở dữ liệu.
Câu trả lời được trích từ một câu hỏi khác:
Tôi không nghĩ rằng điều này là có thể trực tiếp; tài liệu phân loại 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 khách hàng của bạn hỗ trợ).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 });