Trên SQL DBMS chuẩn, điều này sẽ được thực hiện với truy vấn sau:
SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct;
trên mongodb, điều này sẽ được thực hiện bằng cách sử dụng hàm nhóm, mặc dù nó phức tạp hơn một chút:
db.collection.group(
{key: { "type":true},
reduce: function(obj,prev) { prev.count += 1; },
initial: { count: 0 }
});
Ở đây tôi yêu cầu db trả về các giá trị cho khóa "type" (do đó là "true") và đối với mỗi giá trị, hàm giảm đã cho sẽ được sử dụng để tổng hợp các bản ghi được tìm thấy. Ở đây tôi chỉ cập nhật số lần mỗi bản ghi xuất hiện. Nếu bạn chạy truy vấn này, bạn sẽ nhận được một thứ như sau:
[
{
"type" : "report",
"count" : 5
},
{
"type" : "memo",
"count" : 15
}
{
"type" : "research",
"count" : 3
}
]
Bạn sẽ nhận thấy điều này không được đặt hàng; ngay cả các tài liệu mongodb cũng nói rằng cách dễ nhất để đặt hàng là thực hiện ở phía máy khách.
Tài liệu liên quan có tại tại đây .