Ví dụ về tập hợp trong MongoDB là gì?

Đường ống tổng hợp có thể có một hoặc nhiều "giai đoạn". Thứ tự của các giai đoạn này rất quan trọng. Mỗi giai đoạn hoạt động dựa trên kết quả của giai đoạn trước

Thí dụ

db.posts.aggregate([
  // Stage 1: Only find documents that have more than 1 like
  {
    $match: { likes: { $gt: 1 } }
  },
  // Stage 2: Group documents by category and sum each categories likes
  {
    $group: { _id: "$category", totalLikes: { $sum: "$likes" } }
  }
])
Hãy tự mình thử »


Dữ liệu mẫu

Để chứng minh việc sử dụng các giai đoạn trong quy trình tổng hợp, chúng tôi sẽ tải dữ liệu mẫu vào cơ sở dữ liệu của chúng tôi

Từ bảng điều khiển MongoDB Atlas, đi đến Cơ sở dữ liệu. Nhấp vào dấu chấm lửng và chọn "Tải tập dữ liệu mẫu". Thao tác này sẽ tải một số bộ dữ liệu mẫu vào cơ sở dữ liệu của bạn

Trong các phần tiếp theo, chúng ta sẽ khám phá chi tiết hơn một số giai đoạn quy trình tổng hợp bằng cách sử dụng dữ liệu mẫu này

Khi người dùng MongoDB muốn thu thập số liệu từ cơ sở dữ liệu MongoDB, việc tổng hợp MongoDB là công cụ tốt nhất cho việc này. Gói dữ liệu từ nhiều nguồn bản ghi, sau đó được vận hành theo nhiều cách khác nhau trên nhóm dữ liệu để trả về kết quả kết hợp là điều mà MongoDB cho phép người dùng của nó. Trong chương này, bạn sẽ tìm hiểu về khái niệm tập hợp được hỗ trợ bởi MongoDB

Tổng hợp là gì?

Trong MongoDB, tổng hợp có thể được định nghĩa là thao tác được sử dụng để xử lý các loại dữ liệu khác nhau trong bộ sưu tập, trả về kết quả được tính toán. Khái niệm tổng hợp chủ yếu phân cụm dữ liệu của bạn từ nhiều tài liệu khác nhau, sau đó được sử dụng và vận hành theo nhiều cách (trên các dữ liệu được phân cụm này) để trả về kết quả kết hợp có thể mang lại thông tin mới cho cơ sở dữ liệu hiện có. Bạn có thể liên kết tổng hợp với tổng hợp của số đếm (*) cùng với 'nhóm theo' được sử dụng trong SQL vì cả hai đều tương đương về mặt hoạt động

MongoDB cung cấp ba cách khác nhau để thực hiện tổng hợp

  • Đường ống tổng hợp
  • Chức năng thu nhỏ bản đồ
  • Phương pháp tổng hợp mục đích duy nhất

Phương thức tổng hợp () trong MongoDB

Hàm tổng hợp của MongoDB sẽ nhóm các bản ghi dưới dạng một bộ sưu tập mà sau đó có thể được sử dụng để cung cấp các hoạt động như tổng số (tổng), giá trị trung bình, tối thiểu và tối đa, v.v. từ nhóm tổng hợp dữ liệu được trích xuất

Để thực hiện chức năng tổng hợp như vậy, phương thức tổng hợp () được sử dụng. Cú pháp của phương pháp này trông giống như thế này

cú pháp

db.collection_name.aggregate(aggregate_operation)

Bây giờ, chúng ta hãy xem cách hoạt động của phương thức tổng hợp ().

Thực hiện phương thức tổng hợp ()

Hãy xem xét một bộ sưu tập có tên là lập trình viên, có dữ liệu sau. Bạn đã sử dụng phương thức find() để xem tất cả các dữ liệu khác nhau có sẵn trong đó

Tổng hợp là quá trình chọn dữ liệu từ một bộ sưu tập trong MongoDB. Nó xử lý nhiều tài liệu và trả về kết quả được tính toán

Sử dụng tính năng tổng hợp để nhóm các giá trị từ nhiều tài liệu hoặc thực hiện các thao tác trên dữ liệu được nhóm để trả về một kết quả duy nhất

Hoạt động tổng hợp có thể được thực hiện theo hai cách

  1. Sử dụng đường ống tổng hợp
  2. Sử dụng các phương pháp tổng hợp mục đích duy nhất. db. thu thập. ước tínhDocumentCount(), db. thu thập. đếm() và db. thu thập. riêng biệt()

đường ống tổng hợp

Quy trình tổng hợp là một mảng gồm một hoặc nhiều giai đoạn được truyền trong phương thức

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        gender:'male',
        email: "[email protected]",
        salary: 5000,
        department: { 
                    "name":"HR" 
                }
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        gender:'male',
        email: "[email protected]",
        salary: 8000,
        department: { 
                    "name":"Finance" 
                }
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        gender:'male',
        email: "[email protected]",
        salary: 7500,
        department: { 
                    "name":"Marketing" 
                }
    },
    { 
        _id:4,
        firstName: "Rosy",
        lastName: "Brown",
        gender:'female',
        email: "[email protected]",
        salary: 5000, 
        department: { 
                    "name":"HR" 
                }

    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        gender:'male',
        email: "[email protected]",
        salary: 4500,
        department: { 
                    "name":"Finance" 
                }

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        gender:'male',
        email: "[email protected]",
        salary: 7000,
        department: { 
                    "name":"Marketing" 
                }
    }
])
6 hoặc
db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        gender:'male',
        email: "[email protected]",
        salary: 5000,
        department: { 
                    "name":"HR" 
                }
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        gender:'male',
        email: "[email protected]",
        salary: 8000,
        department: { 
                    "name":"Finance" 
                }
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        gender:'male',
        email: "[email protected]",
        salary: 7500,
        department: { 
                    "name":"Marketing" 
                }
    },
    { 
        _id:4,
        firstName: "Rosy",
        lastName: "Brown",
        gender:'female',
        email: "[email protected]",
        salary: 5000, 
        department: { 
                    "name":"HR" 
                }

    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        gender:'male',
        email: "[email protected]",
        salary: 4500,
        department: { 
                    "name":"Finance" 
                }

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        gender:'male',
        email: "[email protected]",
        salary: 7000,
        department: { 
                    "name":"Marketing" 
                }
    }
])
7

db.collection.aggregate([ {stage1}, {stage2}, {stage3}...])

Khung tổng hợp xử lý đường dẫn các giai đoạn trên dữ liệu thu thập và cung cấp cho bạn đầu ra ở dạng bạn cần

Mỗi giai đoạn nhận đầu ra của giai đoạn trước, xử lý thêm dữ liệu và gửi nó đến giai đoạn tiếp theo dưới dạng dữ liệu đầu vào. Đường dẫn tổng hợp thực thi trên máy chủ có thể tận dụng các chỉ mục. Xem danh sách các chặng tại đây

Ví dụ về tập hợp trong MongoDB là gì?

Hãy xem cách sử dụng các giai đoạn khác nhau trong bộ sưu tập

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        gender:'male',
        email: "[email protected]",
        salary: 5000,
        department: { 
                    "name":"HR" 
                }
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        gender:'male',
        email: "[email protected]",
        salary: 8000,
        department: { 
                    "name":"Finance" 
                }
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        gender:'male',
        email: "[email protected]",
        salary: 7500,
        department: { 
                    "name":"Marketing" 
                }
    },
    { 
        _id:4,
        firstName: "Rosy",
        lastName: "Brown",
        gender:'female',
        email: "[email protected]",
        salary: 5000, 
        department: { 
                    "name":"HR" 
                }

    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        gender:'male',
        email: "[email protected]",
        salary: 4500,
        department: { 
                    "name":"Finance" 
                }

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        gender:'male',
        email: "[email protected]",
        salary: 7000,
        department: { 
                    "name":"Marketing" 
                }
    }
])
8 sau đây

Dữ liệu mẫu

Sao chép

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        gender:'male',
        email: "[email protected]",
        salary: 5000,
        department: { 
                    "name":"HR" 
                }
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        gender:'male',
        email: "[email protected]",
        salary: 8000,
        department: { 
                    "name":"Finance" 
                }
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        gender:'male',
        email: "[email protected]",
        salary: 7500,
        department: { 
                    "name":"Marketing" 
                }
    },
    { 
        _id:4,
        firstName: "Rosy",
        lastName: "Brown",
        gender:'female',
        email: "[email protected]",
        salary: 5000, 
        department: { 
                    "name":"HR" 
                }

    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        gender:'male',
        email: "[email protected]",
        salary: 4500,
        department: { 
                    "name":"Finance" 
                }

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        gender:'male',
        email: "[email protected]",
        salary: 7000,
        department: { 
                    "name":"Marketing" 
                }
    }
])

Giai đoạn $match

Giai đoạn

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        gender:'male',
        email: "[email protected]",
        salary: 5000,
        department: { 
                    "name":"HR" 
                }
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        gender:'male',
        email: "[email protected]",
        salary: 8000,
        department: { 
                    "name":"Finance" 
                }
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        gender:'male',
        email: "[email protected]",
        salary: 7500,
        department: { 
                    "name":"Marketing" 
                }
    },
    { 
        _id:4,
        firstName: "Rosy",
        lastName: "Brown",
        gender:'female',
        email: "[email protected]",
        salary: 5000, 
        department: { 
                    "name":"HR" 
                }

    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        gender:'male',
        email: "[email protected]",
        salary: 4500,
        department: { 
                    "name":"Finance" 
                }

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        gender:'male',
        email: "[email protected]",
        salary: 7000,
        department: { 
                    "name":"Marketing" 
                }
    }
])
9 thường là giai đoạn đầu tiên để chỉ chọn các tài liệu phù hợp từ một bộ sưu tập. Nó tương đương với phương thức Find(). Ví dụ sau minh họa một quy trình tổng hợp với một giai đoạn
db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        gender:'male',
        email: "[email protected]",
        salary: 5000,
        department: { 
                    "name":"HR" 
                }
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        gender:'male',
        email: "[email protected]",
        salary: 8000,
        department: { 
                    "name":"Finance" 
                }
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        gender:'male',
        email: "[email protected]",
        salary: 7500,
        department: { 
                    "name":"Marketing" 
                }
    },
    { 
        _id:4,
        firstName: "Rosy",
        lastName: "Brown",
        gender:'female',
        email: "[email protected]",
        salary: 5000, 
        department: { 
                    "name":"HR" 
                }

    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        gender:'male',
        email: "[email protected]",
        salary: 4500,
        department: { 
                    "name":"Finance" 
                }

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        gender:'male',
        email: "[email protected]",
        salary: 7000,
        department: { 
                    "name":"Marketing" 
                }
    }
])
9 duy nhất

Thí dụ. Giai đoạn $match

Sao chép

db.employees.aggregate([ {$match:{ gender: 'female'}} ])

Trong ví dụ trên, giai đoạn

db.employees.insertMany([
    { 
        _id:1,
        firstName: "John",
        lastName: "King",
        gender:'male',
        email: "[email protected]",
        salary: 5000,
        department: { 
                    "name":"HR" 
                }
    },
    { 
        _id:2,
        firstName: "Sachin",
        lastName: "T",
        gender:'male',
        email: "[email protected]",
        salary: 8000,
        department: { 
                    "name":"Finance" 
                }
    },
    { 
        _id:3,
        firstName: "James",
        lastName: "Bond",
        gender:'male',
        email: "[email protected]",
        salary: 7500,
        department: { 
                    "name":"Marketing" 
                }
    },
    { 
        _id:4,
        firstName: "Rosy",
        lastName: "Brown",
        gender:'female',
        email: "[email protected]",
        salary: 5000, 
        department: { 
                    "name":"HR" 
                }

    },
    { 
        _id:5,
        firstName: "Kapil",
        lastName: "D",
        gender:'male',
        email: "[email protected]",
        salary: 4500,
        department: { 
                    "name":"Finance" 
                }

    },
    { 
        _id:6,
        firstName: "Amitabh",
        lastName: "B",
        gender:'male',
        email: "[email protected]",
        salary: 7000,
        department: { 
                    "name":"Marketing" 
                }
    }
])
9 trả về tất cả các nhân viên nam và chuyển nó sang giai đoạn tiếp theo
db.collection_name.aggregate(aggregate_operation)
18. Biểu thức
db.collection_name.aggregate(aggregate_operation)
21 sắp xếp các tài liệu đầu vào theo trường
db.collection_name.aggregate(aggregate_operation)
22 theo thứ tự tăng dần. 1 biểu thị thứ tự tăng dần và -1 biểu thị thứ tự giảm dần

Tập hợp trong MongoDB là gì?

Tập hợp trong MongoDB là gì? . Các giai đoạn tạo nên cái được gọi là đường ống dẫn. Các giai đoạn trong quy trình có thể lọc, sắp xếp, nhóm, định hình lại và sửa đổi các tài liệu đi qua quy trình. a way of processing a large number of documents in a collection by means of passing them through different stages. The stages make up what is known as a pipeline. The stages in a pipeline can filter, sort, group, reshape and modify documents that pass through the pipeline.

Mục đích của tổng hợp là gì?

Dữ liệu tổng hợp thường được sử dụng để phân tích thống kê để thu thập thông tin về các nhóm cụ thể dựa trên các biến số nhân khẩu học hoặc hành vi cụ thể , chẳng hạn như tuổi tác, nghề nghiệp .

Loại nào sau đây là các loại tập hợp trong MongoDB?

MongoDB có thể thực hiện tổng hợp theo 3 cách và chúng như sau. Quy trình tổng hợp . Chức năng thu nhỏ bản đồ. Phương pháp tổng hợp một mục đích.

Sự khác biệt giữa tìm và tổng hợp trong MongoDB là gì?

Lệnh find() của MongoDB rất linh hoạt và dễ sử dụng, nhưng khung tổng hợp cho phép bạn đưa nó lên một tầm cao mới . Đường ống tổng hợp có thể làm bất cứ điều gì mà thao tác find() có thể làm và hơn thế nữa.