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

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

Trong MongoDB, $count toán tử tổng hợp chuyển tài liệu sang giai đoạn tiếp theo trong quy trình tổng hợp có chứa số lượng tài liệu được nhập vào giai đoạn hiện tại.

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 }

Chúng ta có thể sử dụng phép toán tổng hợp sau để đếm số lượng chó trong bộ sưu tập:

db.pets.aggregate([
    {
      $match: { type: "Dog" }
    },
    {
      $count: "DogCount"
    }
])

Kết quả:

{ "DogCount" : 4 }

Cách thức hoạt động của đường ống tổng hợp là nó bao gồm các giai đoạn. Mỗi giai đoạn đường ống cung cấp đầu vào cho giai đoạn tiếp theo.

Do đó, trong ví dụ trên, giai đoạn đầu tiên lọc bộ sưu tập xuống chỉ những tài liệu có type của dog . Giai đoạn thứ hai lấy các tài liệu đó, đếm và chuyển kết quả cho giai đoạn tiếp theo. Vì đây là giai đoạn cuối cùng trong quy trình, chúng tôi đã thấy kết quả đầu ra.

Đếm tài liệu được nhóm

Dưới đây là một ví dụ kết hợp toán tử tổng hợp $ group với $ count để trả về số lượng từng loại vật nuôi dưới một trọng lượng nhất định.

db.pets.aggregate([
    {
      $match: { weight: { $lt: 30 } }
    },
    {
      $group: { _id: "$type", count: { $sum: 1 } }
    }
])

Kết quả:

{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }
{ "_id" : "Dog", "count" : 3 }

Thêm giai đoạn đường ống

Trong ví dụ này, chúng tôi thêm một giai đoạn đường ống để sắp xếp kết quả. Đặc biệt, chúng tôi sử dụng $sort để thực hiện việc này.

db.pets.aggregate([
    {
      $match: { weight: { $lt: 30 } }
    },
    {
      $group: { _id: "$type", count: { $sum: 1 } }
    },
     { 
      $sort : { count : -1, _id: 1 } 
    }
])

Kết quả:

{ "_id" : "Dog", "count" : 3 }
{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }

Trong trường hợp này, chúng tôi sắp xếp theo số lượng theo thứ tự giảm dần (-1 chỉ định thứ tự giảm dần), sau đó bằng _id theo thứ tự tăng dần (1 chỉ định thứ tự tăng dần).

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. Cập nhật một phần tài liệu con với nodejs / mongoose

  2. Làm thế nào để truy vấn MongoDB để kiểm tra xem một mục có tồn tại hay không?

  3. 9 tính năng mới của MongoDB - Phải học để thành thạo trong MongoDB

  4. Tại sao nên học MongoDB - 10 lý do nên học MongoDB cho năm 2022

  5. ClusterControl - Tất cả các tính năng nổi bật và cải tiến từ năm 2017