Aggregate (Match, Group) trong MongoID

Hi all,

Hôm nay chúng ta sẽ cùng tìm hiểu về Aggregate trong MongoDB áp dụng vào trong MongoID.

Đối với nhiều bạn mới làm quen với MongoDB sẽ có những câu hỏi như dạng: một số câu lệnh cơ bản có vẻ giống với ActiveRecord đấy, nhưng liệu các truy vấn phức tạp có dễ dàng và có hỗ trợ hay không?

Trường hợp cụ thể ở việc truy vấn Group by, thường được sử dụng trong việc kết xuất biểu đồ trong thời gian 7 ngày, 1 tháng, 3 tháng hoặc hơn…

Đúng là nếu mới bắt đầu việc có thể truy vấn được so với câu lệnh truy vấn Group by bình thường là việc khá khó.

Hôm nay mình sẽ chia sẻ cách thực hiện công việc này.

Nội dung của group by là sẽ nhóm các dòng dữ liệu thành một nhóm, sau đó thực hiện các công việc.

Khi tìm hiểu về mongodb chúng ta cũng sẽ có group (để thực hiện việc nhóm), đưọc sử dụng với Aggregate.

Với mongoid có thể sử dụng như sau:

Câu lệnh này sẽ thực hiện việc gì?

Ở đây chúng ta thấy rõ có 2 tham số truyền vào đó là match và group.

1.Match ở đây là gì?

Match là toán tử điều kiện tương tự như where. Cấu trúc của match như sau:

Với lệnh này mình sẽ lấy ra các dữ liệu  30 ngày gần đây.

2.Vậy hẳn group phần sẽ thực hiện việc gom nhóm và sau đó là một số thao tác tính toán, ở đây mình ví dụ thao tác tính có bao nhiêu dòng dữ liệu cho mỗi nhóm.

Lúc này match sẽ có dạng như sau:

3.Thực hiện câu lệnh này bạn sẽ thấy output có kết quả như sau:

Với kết quả như vậy bạn hoàn toàn có thể xử lý dữ liệu đầu vào cho bước tiếp theo là hiển thị lên chart.

Mong rằng với bài viết này bạn sẽ hiểu thêm về MongoDb và mongoid.

 

Tiến An

Admin tại RubySG.com

You may also like...