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

Toán tử tổng hợp MongoDB $ sortByCount

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ cosh

  2. Cách triển khai MongoDB để có tính khả dụng cao

  3. MongoDB $ chữ

  4. Không thể kết nối với MongoDB Atlas (queryTxt ETIMEOUT)

  5. MongoDB, xóa đối tượng khỏi mảng