Truy vấn tổng hợp trong mongodb là gì?

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à hoạt động đượ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 phương thức tổng hợp () hoạt động như thế nào

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

Đường dẫn 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

Truy vấn tổng 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ừ 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

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

Sao chép

________số 8

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.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" 
                }
    }
])
08. Biểu 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" 
                }
    }
])
11 sắp xếp các tài liệu đầu vào theo trường
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" 
                }
    }
])
12 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

Truy vấn tổng hợp là gì?

Truy vấn tổng hợp là phương pháp lấy dữ liệu nhóm và nhóm con bằng cách phân tích một tập hợp các mục nhập dữ liệu riêng lẻ . Thuật ngữ này thường được sử dụng bởi các nhà phát triển cơ sở dữ liệu và quản trị viên cơ sở dữ liệu.

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

Một quy trình tổng hợp bao gồm một hoặc nhiều giai đoạn xử lý tài liệu. Mỗi giai đoạn thực hiện một thao tác trên chứng từ đầu vào . Ví dụ: một giai đoạn có thể lọc tài liệu, nhóm tài liệu và tính toán giá trị. Các tài liệu được xuất ra từ một giai đoạn được chuyển sang giai đoạn tiếp theo.

Tại sao lại sử dụng tính năng tổng hợp trong MongoDB?

Trong MongoDB, các hoạt động tổng hợp xử lý các bản ghi/tài liệu dữ liệu và trả về các kết quả được tính toán. Nó thu thập các giá trị từ các tài liệu khác nhau và nhóm chúng lại với nhau, sau đó thực hiện các loại hoạt động khác nhau trên dữ liệu được nhóm đó như tổng, trung bình, tối thiểu, tối đa, v.v. để trả về kết quả được tính toán

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 .