Trong MongoDB, $sortByCount
quy trình tổng hợp nhóm các tài liệu đến dựa trên giá trị của một biểu thức được chỉ định, sau đó tính số lượng tài liệu trong từng nhóm riêng biệt.
Mỗi nhóm được xuất trong tài liệu riêng của nó, bao gồm hai trường:
- một
_id
trường chứa giá trị nhóm riêng biệt và - một
count
trường chứa số lượng tài liệu thuộc nhóm đó.
Các tài liệu được sắp xếp theo count
theo thứ tự giảm dần.
Ví dụ
Giả sử chúng ta có một bộ sưu tập có tên là pets
với các tài liệu sau:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 } { "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 } { "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 } { "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 } { "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 } { "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 } { "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 } { "_id" : 8, "name" : "Tweet", "type" : "Bird", "weight" : 1 } { "_id" : 9, "name" : "Flutter", "type" : "Bird", "weight" : 2 }
Dưới đây là ví dụ về truy vấn sử dụng $sortByCount
nhà điều hành.
db.pets.aggregate([
{ $match: {} },
{ $sortByCount: "$type" }
])
Kết quả:
{ "_id" : "Dog", "count" : 4 } { "_id" : "Cat", "count" : 2 } { "_id" : "Bird", "count" : 2 } { "_id" : "Bat", "count" : 1 }
Trong ví dụ này, chúng tôi xuất ra từng loại vật nuôi, cùng với số lượng vật nuôi của từng loại tương ứng.
Điều này tương đương với sau:
db.pets.aggregate([
{
$match: { }
},
{
$group: { _id: "$type", count: { $sum: 1 } }
},
{
$sort : { count : -1 }
}
])
Đây là một ví dụ khác, nhưng có thêm tiêu chí lọc.
db.pets.aggregate([
{
$match: { weight: { $lt: 15 } }
},
{
$sortByCount: "$type"
}
])
Kết quả:
{ "_id" : "Cat", "count" : 2 } { "_id" : "Bird", "count" : 2 } { "_id" : "Dog", "count" : 1 } { "_id" : "Bat", "count" : 1 }
Lần này chỉ có một chú chó trong tài liệu được chuyển tới $sortByCount
, bởi vì giai đoạn đường ống đầu tiên loại bỏ những con chó vượt quá một trọng lượng nhất định. Do đó, $sortByCount
chỉ cần đếm các số từ tài liệu được cung cấp cho nó, chỉ bao gồm một con chó.
Thông tin thêm
Xem tài liệu MongoDB để biết thêm thông tin.