Khớp nhiều điều kiện mongodb
Cùng với sự phát triễn của các hệ thống lớn, NOSQL đang dần trở thành một xu thế tất yếu đối với các hệ thống yêu cầu xử lý số lượng dữ liệu lớn, yêu cầu truy vấn nhanh và có thể mở rộng dễ dàng. MongoDB đang dần trở thành một trong những hệ thống cơ sở dữ liệu tốt nhất cho công việc này. Có rất nhiều tính năng nổi bật trong quá trình xử lý dữ liệu trong mongoDb, tuy nhiên nổi bật nhất vẫn là Aggregation. Đây là một tính năng rất hữu ích được sử dụng để tính toán số lượng dữ liệu lớn trên các tài liệu tập hợp (tương tự như bảng trong SQL). Bài viết này sẽ giới thiệu cơ bản về các toán tử và cách thức hoạt động của Aggregation Show Khung tổng hợp là một truy vấn nâng cao của MongoDb, cho phép thực hiện tính toán, xử lý và kết hợp từ nhiều tài liệu (tương tự như các bảng trong SQL) để lấy thông tin cần thiết. Ví dụ. Chúng ta có các tài liệu. bán hàng, sản phẩm và người dùng, chúng ta có thể sử dụng Aggregation framework để tính toán thông tin từ 3 bảng này như danh số bán trong tháng này, danh số theo sản phẩm hoặc theo người dùng. Có thể cấu hình Aggregation tương tự như lệnh GROUP BY trong SQL Nguyên tắc hoạt độngKhi thực hiện theo tác động với Aggregation framework, về nguyên tắc Aggregation sẽ thực hiện xử lý dựa trên các aggregation pipeline. Mỗi bước thực hiện một tính toán duy nhất trong các dữ liệu đầu vào và tạo dữ liệu đầu ra. Để hiểu rõ hơn chúng ta có thể nhìn luồng xử lý phía dưới Nhìn vào chúng ta có thể thấy , khi một tài liệu được đưa vào đường dẫn Tổng hợp để xử lý. Việc thực hiện sẽ được thực hiện theo tuần tự. Thao tác 1 -> Thao tác 2. -> Hoạt động N. Đầu ra của Thao tác 1 sẽ là đầu vào của Thao tác 2 và cứ thế. Cuối cùng sau khi xử lý xong dữ liệu sẽ được xuất ra Some Operation basic in Aggregation dự án $. only the field mong muốn truy vấn $match. select document mong muốn truy vấn giới hạn $. giới hạn số lượng tài liệu bỏ qua $. bỏ qua tài liệu nhất định nhóm $. nhóm các tài liệu theo điều kiện nhất định $sắp xếp. sắp xếp tài liệu thư giãn $. thực hiện thao tác mở rộng trên một mảng , tạo một tài liệu đầu ra cho mỗi giá trị trong mảng đó $ ra. ghi kết quả sau khi thực hiện trên đường dẫn vào một bộ sưu tập. (chỉ áp dụng cho phiên bản 2. 6 trở đi) Dưới đây là một đường dẫn khuôn khổ tổng hợp ví dụ khi thực hiện theo dựa trên các thuật toán so khớp , nhóm và sắp xếp 4Các toán tử sẽ được thực hiện như mô tả dưới đây Hình trên khi thực hiện tính toán trên sản phẩm bộ sưu tập 1. Hoạt động đầu tiên $match sẽ thực thi. $match will select a number of document on input 2. Sau khi thực hiện thao tác $match, các giá trị từ kết quả đầu ra của $match sẽ được sử dụng để bắt đầu cho hoạt động $group. Toán tử này có nhiệm vụ nhóm các kết quả đầu ra theo điều kiện cụ thể ví dụ như tính tổng hoặc trung bình cộng 3. Đầu ra của hoạt động $group sẽ được sử dụng làm đầu vào cho hoạt động $sort. Operation $Sort có nhiệm vụ sắp xếp các kết quả (theo điều kiện trước đó) và trả về kết quả cuối cùng Bảng so sánh giữa SQL và aggregation framework Lệnh SQLAggregation framework operatorSELECT$project $group functions. $sum, $min, $avg, v.v. TỪdb. tên bộ sưu tập. tổng hợp (. )JOIN$unwindGROUP BY$groupHAVING$matchMột số ví dụ về các toán tử trong AggregationTập hợp sử dụng rất nhiều toán tử để tính toán trên các tài liệu xác định. Bài viết này sẽ chỉ đề cập đến nhà điều hành mới nhất thường xuyên được sử dụng nhất Dữ liệu được sử dụng cho các toán tử tính toán dưới bài viết bộ sưu tập tên. Dữ liệu khách hàng
toán tử $matchĐây là một nhà điều hành rất phổ biến và được sử dụng nhiều nhất. Mục đích chính của nhà điều hành này là xác định những tài liệu phù hợp với điều kiện cho trước cú pháp. 5Câu lệnh dưới đây sẽ thực hiện việc chọn tài liệu với khách hàng ở thành phố. Salem
Kết quả
nhà điều hành dự án $Chỉ định các trường cần thiết khi thực hiện truy vấn dựa trên đầu vào cú pháp. 6Ví dụ. Câu lệnh bên dưới sẽ chỉ lấy các trường địa chỉ , thành phố , tiểu bang từ khách hàng thu thập 7Kết quả
toán tử nhóm $Nhóm các tài liệu đầu vào dựa trên các điều kiện cho trước; cú pháp ________số 8Lệnh bên dưới sẽ thực hiện nhóm các khách hàng có cùng trạng thái và thực hiện tính trên các giá trị đã có trong nhóm
Kết quả 0toán tử giới hạn $Toán tử này thường được sử dụng để giới hạn số lượng đầu ra tài liệu. cú pháp. 8Ví dụ. Câu lệnh bên dưới sẽ giới hạn đầu ra tài liệu là 2 2Kết quả 3toán tử sắp xếp $Toán tử thường được sử dụng để sắp xếp các kết quả sau khi đã thực hiện tính toán xong. cú pháp. 9Ví dụ. Lệnh bên dưới sẽ thực hiện sắp xếp các kết quả theo thứ tự tăng dần của mã bưu điện và giảm dần của fed_id và thực hiện lấy 2 bảng ghi đầu tiên 5Lưu ý. 1 tương ứng với tăng dần và -1 giảm dần Kết quả 0Kết hợp các toán tửTrên thực tế công việc thao tác và làm việc với Aggregation là sự kết hợp của nhiều toán tử khác nhau để có thể đưa ra kết quả mong muốn. Dưới đây là một số ví dụ Toán tử $Match + Toán tử $ProjectLệnh bên dưới sẽ thực hiện lọc ra các khách hàng ở thành phố là Woburn và bang là MA. Kết quả sẽ được hiển thị chỉ với 2 địa chỉ trường và sĩ quan 1Kết quả 2Toán tử $Match + Toán tử $Group + Toán tử $Sort + Toán tử $limitCâu lệnh phía dưới là sự kết hợp của 4 toán tử. Khớp, Nhóm, Sắp xếp và Giới hạn. Câu lệnh này sẽ tìm kiếm các khách hàng với trạng thái là. MA , sau đó sẽ nhóm các khách hàng vừa tìm được theo thành phố và đếm xem có bao nhiêu khách hàng ở mỗi thành phố. Tiếp tục thực hiện sắp xếp các kết quả vừa tìm được theo post_code theo thứ tự tăng dần và lấy 5 kết quả tìm được đầu tiên 3Kết quả 4Toán tử $Match + Toán tử $Group + Toán tử $Sort + Toán tử $OutCâu lệnh dưới đây thực hiện tương tự như ví dụ phía trên tuy nhiên sẽ không giới hạn số lượng tài liệu khi xuất ra và sẽ sử dụng Operator Out để tạo ra một bộ sưu tập mới mang tên NewCustomer. Operator Out cho phép tạo ra một bộ sưu tập mới từ kết quả truy vấn trả về 5Kết quả. Bộ sưu tập mớiKhách hàng đã được tạo. Thực hiện truy vấn trên bộ sưu tập mới bằng lệnh. 0Kết quả thông tin của bộ sưu tập này là toàn bộ dữ liệu đã được tính toán với các toán tử. Kết hợp , Nhóm , Sắp xếp 6Kết luậnTập hợp là một trong những tính năng nổi bật và quan trọng trong công việc tính toán lý liệu dữ liệu trong mongoDb mà hầu hết các hệ thống hiện đang xử lý đang được sử dụng. Nắm giữ khung Aggregation giúp chúng ta dễ dàng thao tác xử lý dữ liệu một cách đơn giản với MongoDB. Aggregation còn rất nhiều tính năng phạm vi bài viết chưa được cập nhật như. con trỏ (dùng cho việc xử lý dữ liệu quá 16MB) , giải thích hoặc allowDiskUse. Trong bài viết tiếp theo mình sẽ đề cập đến các tính năng này. Hẹn gặp lại các bạn trong các bài viết tiếp theo |