Hướng dẫn $in aggregate mongodb
Lời mở đầuCù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ể dễ dàng mở rộng. MongoDB đang dần trở thành một trong những hệ cơ sở dữ liệu tốt nhất cho việc này. Có rất nhiều tính năng nổi trội trong việc 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 dùng để tính toán số lượng dữ liệu lớn trên tập hợp các document(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
Tổng quanAggregation framework 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 document(tương tự các bảng trong SQL) để cho ra thông tin cần thiết. Ví dụ : Chúng ta có các document : sales, product và user , chúng ta có thể 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 user. Có thể hình dung Aggregation tương tự như lệnh GROUP BY trong SQL. Nguyên tắc hoạt động.Khi thực hiện theo tác với Aggregation framework , về nguyên tắc Aggregation sẽ thực hiện xử lý dựa theo các aggregation pipeline. Mỗi step 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 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 document được đưa vào Aggregation pipeline để xử lý. Việc thực hiện sẽ được thực hiện tuần tự . Operation 1 -> Operation 2 ... -> Operation N . Đầu ra của Operation 1 sẽ là input đầu vào của Operation 2 và cứ vậy. Cuối cùng sau khi xử lý xong dữ liệu sẽ được output. Một số Operation cơ bản trong Aggregation : $project : chỉ định các field mong muốn truy vấn. $match : chọn document mong muốn truy vấn. $limit: giới hạn số lượng document $skip : bỏ qua document nhất định $group: nhóm các document theo điều kiện nhất định $sort: sắp xếp document $unwind : thực hiện thao tác mở rộng trên một mảng , tạo một ouput document cho mỗi giá trị trong mảng đó $out : ghi kết quả sau khi thực hiện trên pipeline vào một collection. (chỉ áp dụng đối với version 2.6 trở đi) Dưới đây là một ví dụ aggregation framework pipeline khi thực hiện theo dựa trên các toán tử match , group and sort :
Các toán tử sẽ được thực hiện được mô tả như hình dưới : Hình trên khi thực hiện tính toán trên collection products. 1 : Đầu tiên operation $match sẽ đươc thực thi. $match sẽ chọn một số document nhất định từ input. 2: Sau khi thực hiện operation $match, các giá trị từ kết quả output ra của $match sẽ được dùng làm đầu vào cho operation $group. Toán tử này có nhiệm vụ group các kết quả đầu ra theo điều kiện cụ thể ví dụ tính tổng hoặc trung bình cộng . 3: Output của operation $group sẽ được sử dụng làm input cho operation $sort. Operation $Sort có nhiệm vụ sắp xếp các kết quả (theo điều kiện cho trước) và trả ra kết quả cuối Bảng so sánh giữa SQL và aggregation framework :
Một số ví dụ về các operator trong AggregationAggregation sử dụng rất nhiều các operator để tính toán trên các document xác định . Bài viết này sẽ chỉ đề cập đến nhất operator thường xuyên được 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 : Name collection : Customer Data:
$match operatorĐây là một operator rất phổ biến và được dùng nhiều nhất . Mục đích chính của operator này là xác định những document phù hợp với điều kiện cho trước. Cú pháp : Câu lệnh dưới đây sẽ thực hiện chọn các document với các khách hàng ở city : Salem
Kết quả :
$project operatorChỉ định các field cần thiết khi thực hiện truy vấn dựa vào input đầu vào.. Cú pháp : Ví dụ : Câu lệnh bên dưới sẽ chỉ lấy các field address , city , state từ collection customer
Kết quả :
$group operatorNhóm các input document dựa vào các điều kiện cho trước; Cú pháp :
Câu lệnh dưới sẽ thực hiện group các khách hàng có cùng state và thực hiện count trên các giá trị đã group:
Kết quả :
$limit operatorOperator này thường được dùng để giới hạn số lượng document output. Cú pháp : Ví dụ : Câu lệnh dưới sẽ giới hạn document output là 2:
Kết quả :
$sort operatorOperator thường được 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 : Ví dụ : Câu lệnh dưới sẽ thực hiện sort các kết quả theo thứ tự tăng dần của postal_code và giảm dần của fed_id và thực hiện lấy 2 bảng ghi đầu tiên
Lưu ý : 1 tương ứng với tăng dần và -1 giảm dần Kết quả :
Kết hợp các operatorTrên thực tế việc thao tác và làm việc với Aggregation là sự kết hợp của nhiều operator khác nhau để có thể cho ra kết quả mong muốn. Dưới đây là một số ví dụ : $Match operator + $Project operatorCâu lệnh phía dưới sẽ thực hiện lọc ra các khách hàng ở city là Woburn và state là MA . Kết quả sẽ được hiển thị chỉ với 2 trường address và officer .
Kết quả :
$Match operator + $Group operator + $Sort operator + $limit operatorCâu lệnh phía dưới là sự kết hợp của 4 operator : Match , Group, Sort and Limit. Câu lệnh này sẽ tìm các khách hàng với state là : MA , sau đó sẽ nhóm các khách hàng vừa tìm được theo city và đếm xem có bao nhiêu khách hàng ở mỗi city. Tiếp theo thực hiện sort các kết quả vừa tìm được theo postal_code theo thứ tự tăng dần và lấy 5 quả đầu tiên tìm được.
Kết quả :
$Match operator + $Group operator + $Sort operator + $Out OperatorCâu lệnh dưới đây thực hiện tương tự ví dụ phía trên tuy nhiên sẽ không giới hạn số lượng document khi output ra và sẽ sử dụng Operator Out để tạo ra một collection mới mang tên NewCustomer. Operator Out cho phép tạo ra một collection mới từ kết quả truy vấn trả về.
Kết quả : Collection newCustomer đã được tạo. Thực hiện query trên collection mới với lệnh : Kết quả thông tin của collection này là toàn bộ dữ liệu đã được tính toán với các operator : Match , Group , Sort
Kết luậnAggregation là một trong những tính năng nổi bật và quan trọng trong việc tính toán xử lý dữ liệu trong mongoDb mà hầu hết các hệ thống hiện nay đang dùng. Nắm vững Aggregation Framework khiến chúng ta dễ dàng thao tác xử lý một cách đơn giản data với MongoDB. Aggregation còn rất nhiều tính năng phạm vi bài viết chưa đề cập đến như : cursor(dùng cho việc xử lý dữ liệu quá 16MB) , explain hay allowDiskUse. Trong bài viết kế tiếp 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 Tài liệu tham khảohttps://docs.mongodb.com/manual/reference/operator/aggregation/ |
Bài Viết Liên Quan
Hướng dẫn oop python
Như bài trước thì mình đã đi tìm hiểu qua cơ bản về biến và kiểu dữ liệu trong python. Nếu bạn nào chưa xem thì xem tại đây. Còn phần này mình sẽ đi qua ...
Hướng dẫn linear regression python
Trong bài viết, mình sẽ giới thiệu một trong những thuật toán cơ bản nhất của Machine Learning. Đây là thuật toán Linear Regression (Hồi Quy Tuyến Tính) thuộc ...
Which of the following is arithmetic operator in javascript?
Last update on August 19 2022 21:50:38 (UTC/GMT +8 hours)Arithmetic Operators : +, -, *, / In JavaScript, arithmetic operators take numerical values (either literals or variables) as their ...
Hướng dẫn dùng string operator trong PHP
Toán tử (operator) được sử dụng để thực hiện các thao tác trên các biến (variable) và giá trị (value). Trong bài này, chúng ta sẽ tìm hiểu về các loại toán ...
Hướng dẫn dùng pycharm interpreter python
Giới thiệu Pycharm IDEĐể viết mã nguồn Python, ta có thể sử dụng bất kỳ một trình soạn thảo nào, kể cả những trình soạn thảo đơn giản nhất như ...
Hướng dẫn dùng unic id trong PHP
1. Chức năng của hàm uniqid()Hàm uniqid() trong PHP có chức năng tạo ra một chuỗi ký tự duy nhất dựa vào thời gian hiện tại tính theo micro giây. Chuỗi ký tự ...
What is javascript explain arithmetic operators with example?
JavaScript Arithmetic OperatorsArithmetic operators perform arithmetic on numbers (literals or variables). OperatorDescription+ Addition - Subtraction * Multiplication ** Exponentiation ...
Hướng dẫn dùng emailvalidation trong PHP
Trong bài này, chúng ta sẽ tìm hiểu về validation email và url trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP ...
Bình chánh lên quận năm 2023
Trong tuần qua, các thông tin quy hoạch nổi bật có thể kể đến như Quốc hội thảo luận việc thực hiện chính sách, pháp luật về công tác quy hoạch, bố ...
Hướng dẫn dùng python opencsv python
Source code: Lib/csv.pyThe so-called CSV (Comma Separated Values) format is the most common import and export format for spreadsheets and databases. CSV format was used for many years prior to ...
Hướng dẫn dùng url 20 trong PHP
Xin chào các bạn, hôm nay trong blog này, bạn sẽ học cách Xây dựng URL Shortener bằng PHP với MySQL & JavaScript. Bạn có thể biết, trong blog trước, tôi đã chia ...
Hướng dẫn addition in php
Trang chủTutorialsHọc PHP trong 7 ngàyTrong bất kỳ lĩnh vực nào chúng ta cũng phải tính toán, so sánh,... một cái gì đó. Lập trình thì cũng như vậy thôi. Và để ...
Hướng dẫn dùng c++ isdigit python
Hàm isalpha() trong Python Hàm islower() trong Python Hàm isdigit() trong Python trả về true nếu chuỗi chỉ chứa các chữ số, nếu không là false.Nội dung chính Cú pháp ...
Hướng dẫn dùng set attribute trong PHP
Mỗi một đối tượng thì sẽ có một hoặc nhiều class, và ở trong class thì sẽ có một hoặc nhiều các thuộc tính, phương thức.Và bài hôm nay chúng ta sẽ đi ...
Hướng dẫn dùng iteration python python
Dẫn nhậpTrong bài trước, Kteam đã giới thiệu đến bạn cách XỬ LÝ FILE trong PythonNội dung chínhDẫn nhậpKhái niệm iteration trong PythonGiới thiệu iterable ...
Hướng dẫn dùng checkdate trong PHP
Hàm checkdate() sẽ kiểm tra ngày, tháng, năm dương lịch truyền vào có hợp lệ hay không. Ngày được coi là hợp lệ khi tất cả các tham số được ...
Hướng dẫn dùng manual libs trong PHP
Các PHP Developers hiếm khi sử dụng đa luồng. Sự đơn giản của chương trình đồng bộ, đơn luồng chắc chắn rất hấp dẫn, nhưng đôi khi việc sử dụng đa ...
Hướng dẫn dùng socket bind trong PHP
Đã đăng vào thg 11 28, 2016 10:51 SA 3 phút đọc 1. Giới thiệuTrước khi nghĩ đến chủ đề này mình có search trên viblo với keyword websocket viblo xem đã có ai viết ...
Hướng dẫn method overriding in php
Tải chồng trong PHP mang nghĩa tạo các thuộc tính và phương thức động. Những thành phần động này được xử lý thông qua các magic method được thiết lập ...
Giá dầu do tháng 4 2023
Bơm xăng cho phương tiện tại trạm xăng ở Paris, Pháp. (Ảnh: AFP/TTXVN) Trong phiên giao dịch 1/8, giá dầu thế giới giảm khoảng 4% khi số liệu tiêu cực về hoạt ...
