Hy vọng, bạn đang thích các hướng dẫn về MongoDB. Phiên cuối cùng là tất cả về MongoDB GridFS. Hôm nay, chúng ta sẽ thấy một thuật ngữ mới gọi là MongoDB Aggregation, một thao tác tổng hợp, MongoDB xử lý các bản ghi dữ liệu và trả về một kết quả được tính toán duy nhất
Ở đây, chúng ta sẽ nói về các loại tập hợp, biểu thức và các giai đoạn của đường dẫn tập hợp với các ví dụ
Vì vậy, hãy bắt đầu Hướng dẫn tổng hợp MongoDB
Tập hợp MongoDB là gì?
Trong hoạt động tổng hợp, MongoDB xử lý các bản ghi dữ liệu và trả về một kết quả được tính toán duy nhất. Nó thực sự nhóm nhiều tài liệu và sau đó thực hiện thao tác tổng hợp trên đó và sau đó trả về một kết quả duy nhất cho người dùng cuối
MongoDB có thể thực hiện tổng hợp theo 3 cách và chúng như sau
- đường ống 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
i. Đường ống tổng hợp MongoDB
Quá trình tổng hợp trong MongoDB được mô hình hóa dựa trên khái niệm đường ống xử lý dữ liệu. Nhiều tài liệu được đưa vào quy trình bán hàng và sau đó các tài liệu này sẽ được chuyển đổi thành kết quả tổng hợp
Các hoạt động được thực hiện trong quá trình đường ống bao gồm chuyển đổi bộ lọc và tài liệu trong đó chúng hoạt động giống như truy vấn và sửa đổi dạng tài liệu đầu ra tương ứng
Phương pháp đường ống cung cấp tổng hợp dữ liệu hiệu quả bằng cách sử dụng các hoạt động khác có trong MongoDB. Nó cũng có thể hoạt động trên một bộ sưu tập sharded
Nó cũng có thể sử dụng các chỉ mục MongoDB để cải thiện hiệu quả của nó ở một số giai đoạn. Với tất cả các đường dẫn tổng hợp này có một giai đoạn tối ưu hóa nội bộ do đó nó có thể làm cho quá trình này trở nên tối ưu cho bộ xử lý
Ví dụ về đường ống tổng hợp MongoDB
ii. Bản đồ-Giảm
Như tên gợi ý, bản thân nó có hai hoạt động, chúng là một bản đồ trong đó mỗi tài liệu đang được xử lý cùng với việc phát ra một hoặc nhiều đối tượng cho từng tài liệu và giảm giai đoạn trong đó đầu ra của hoạt động bản đồ được kết hợp với nhau
MongoDB Map-reduce có thể tùy chọn có một giai đoạn hoàn thiện trong đó nó có thể thực hiện một số sửa đổi cuối cùng trong đầu ra của tài liệu. Map-Reduce sử dụng JavaScript để thực hiện các hoạt động của nó bao gồm cả hoạt động hoàn thiện
Mặc dù javascript cung cấp tính linh hoạt cao hơn so với quy trình tổng hợp, nhưng nó vẫn kém hiệu quả hơn và hoạt động phức tạp hơn so với quy trình tổng hợp trong MongoDB
MongoDB Mapreduce Ví dụ
iii. Hoạt động tập hợp mục đích duy nhất
Các hoạt động này tổng hợp tất cả các tài liệu từ một bộ sưu tập duy nhất trong MongoDB. Mặc dù chúng cung cấp quyền truy cập đơn giản vào các hoạt động tổng hợp phổ biến nhưng chúng thiếu tính linh hoạt và khả năng của đường dẫn tổng hợp và thu nhỏ bản đồ
Ví dụ về hoạt động tổng hợp một mục đích
Các giai đoạn của MongoDB Aggregation Pipeline
Đây là 7 giai đoạn tổng hợp của Pipeline trong MongoDB
- dự án $
- $match
- nhóm $
- $sắp xếp
- $skip & $limit
- $đầu tiên & $cuối cùng
- thư giãn $
i. dự án $
Giai đoạn này được sử dụng để chọn các trường nhất định từ một bộ sưu tập. Chúng tôi cũng có thể thêm, xóa hoặc định hình lại một phím
Thí dụ -
db.example.aggregate[[ { $project:{ _id:1, 'dept':{$toUpper:'$name'}, 'newexp':{$add:['$exp',10]} } } ]]
Ở đây chúng tôi đang tạo 'dept' từ 'tên' trước đó được viết hoa. Và trong 'newexp', chúng tôi sẽ thêm trải nghiệm dưới dạng 10 năm
ii. $match
Nó được sử dụng trong hoạt động lọc và nó có thể giảm số lượng tài liệu được cung cấp làm đầu vào cho giai đoạn tiếp theo.
Thí dụ -
db.example.aggregate[[ { $match:{ name:'xyz' } } ]]
Ở đây chúng tôi đang tổng hợp các tài liệu có tên bằng xyz
iii. nhóm $
Nó làm công việc như tên nói. Nó nhóm tất cả các tài liệu dựa trên một số khóa
Thí dụ -
db.example.aggregate[[ { $group:{ _id:{'dept':'$name'}, employee_count:{$sum:10} } } ]]
iv. $sắp xếp
Nó được sử dụng để sắp xếp tất cả các tài liệu
Thí dụ -
Ở đây chúng tôi muốn nhóm tất cả các bộ phận theo thứ tự tăng dần và sau đó tìm số lượng nhân viên
db.example.aggregate[[ { $group:{ _id:'$name', employee_count:{$sum:1} } }, { $sort:{ _id:1 } } ]]
v. $skip & $limit
Sử dụng bỏ qua, chúng tôi có thể bỏ qua trong danh sách tất cả các tài liệu cho giới hạn nhất định. Và sử dụng giới hạn, chúng tôi có thể giới hạn số lượng tài liệu chúng tôi muốn xem bằng cách chỉ định giới hạn theo sự thuận tiện của chúng tôi
Thí dụ -
db.example.aggregate[[ { $group:{ _id:'$name', employee_count:{$sum:10} } }, { $sort:{ _id:1 } }, { $skip:4 }, { $limit:5 } ]]
vi. $đầu tiên & $cuối cùng
Nó được sử dụng để lấy các giá trị đầu tiên và cuối cùng trong mỗi nhóm tài liệu
Thí dụ -
db.example.aggregate[[ { $group:{ _id:'$name', employee_count:{$sum:1}, record:{ $first:'$code'} } } ]]
vii. thư giãn $
Chúng tôi có thể sử dụng thư giãn cho tất cả các tài liệu đang sử dụng mảng
Thí dụ -
Giả sử rằng chúng ta đang có một tài liệu mẫu
{ a:abcdata, b:xyzdata, c:[a1,a2,a3] }
Sau này nếu thực hiện thao tác bung ra trên c ta sẽ được 3 văn bản như sau
{ a:abcdata, b:xyzdata, c:a1 } { a:abcdata, b:xyzdata, c:a2 } { a:abcdata, b:xyzdata, c:a3 }
Biểu thức tổng hợp MongoDB
Sau đây là biểu thức tổng hợp trong MongoDB với một ví dụ
- $sum – Tổng hợp các giá trị từ tất cả các tài liệu trong bộ sưu tập
- $avg – Trung bình của tất cả các tài liệu trong bộ sưu tập
db.examples.aggregate[[{$group : {_id : "$by_student", num_dataflair : {$avg : "$likes"}}}]]
- $min – Giá trị tối thiểu của tất cả các tài liệu trong một bộ sưu tập
db.example.aggregate[[ { $match:{ name:'xyz' } } ]]0
- $max – Giá trị tối đa của tất cả các tài liệu trong một bộ sưu tập
db.example.aggregate[[ { $match:{ name:'xyz' } } ]]1
- $push – Chèn giá trị vào tài liệu kết quả
db.example.aggregate[[ { $match:{ name:'xyz' } } ]]2
- $addToSet – Chèn giá trị vào tài liệu kết quả mà không tạo bản sao
db.example.aggregate[[ { $match:{ name:'xyz' } } ]]3
- $first – Tài liệu đầu tiên từ tài liệu nguồn theo nhóm
db.example.aggregate[[ { $match:{ name:'xyz' } } ]]4
- $last – Tài liệu cuối cùng từ tài liệu nguồn theo nhóm
db.example.aggregate[[ { $match:{ name:'xyz' } } ]]5
Phần kết luận
Do đó, chúng tôi đã nghiên cứu về Aggregation trong MongoDB với các loại. Đường ống tổng hợp, Chức năng thu nhỏ bản đồ và Phương pháp tổng hợp một mục đích với các ví dụ của chúng
Cùng với điều này, chúng tôi đã thảo luận về các giai đoạn của quy trình tổng hợp và biểu thức được sử dụng trong tổng hợp. Hy vọng, bạn thấy nó hữu ích. Xin vui lòng bình luận cho các truy vấn