- vừa được xem lúc

Tìm hiểu về Aggregate và các ví dụ sử dụng Aggregate với Mongoose trên Node.js

0 0 13

Người đăng: Mr Phan

Theo Viblo Asia

Giới thiệu

Aggregate là một tính năng mạnh mẽ trong Mongoose, một thư viện MongoDB cho Node.js. Nó cho phép bạn thực hiện các phép toán trên tập hợp dữ liệu và trả về kết quả xử lý tùy chỉnh. Với Aggregate, bạn có thể thực hiện các phép toán như nhóm dữ liệu, sắp xếp, lọc và tính toán phức tạp trên cơ sở dữ liệu MongoDB.

Trong bài viết này, chúng ta sẽ tìm hiểu cách hoạt động của Aggregate và cung cấp một số ví dụ thực tế về cách sử dụng Aggregate với Mongoose trên Node.js.

Cách hoạt động của Aggregate

Aggregate trong Mongoose cho phép bạn tạo một chuỗi các giai đoạn (stages) để thực hiện các phép toán trên dữ liệu. Mỗi giai đoạn thực hiện một hoạt động cụ thể và chuyển dữ liệu qua giai đoạn tiếp theo cho đến khi kết quả cuối cùng được trả về.

Các giai đoạn Aggregate phổ biến bao gồm $match, $group, $sort, $project, $limit, $skip và nhiều giai đoạn khác. Mỗi giai đoạn có chức năng và tác dụng riêng để xử lý dữ liệu theo nhu cầu của bạn.

Ví dụ sử dụng Aggregate với Mongoose

Ví dụ về $match và $group:

Giả sử chúng ta có một mô hình Order với các trường customerId, totalAmountstatus. Chúng ta muốn tính tổng doanh thu cho mỗi khách hàng theo trạng thái đã hoàn thành (status: 'completed'). Chúng ta có thể sử dụng Aggregate để thực hiện điều này:

Order.aggregate([ { $match: { status: 'completed' } }, { $group: { _id: '$customerId', totalAmount: { $sum: '$totalAmount' } } }
])
.exec((err, results) => { if (err) { console.error(err); } else { console.log(results); }
});

Trong ví dụ này, chúng ta sử dụng $match để lọc các đơn hàng có trạng thái đã hoàn thành. Sau đó, chúng ta sử dụng $group để nhóm các đơn hàng theo customerId và tính tổng totalAmount cho mỗi nhóm.

Ví dụ về $sort, $limit và $skip:

Giả sử chúng ta có một mô hình Product với các trường name, price và chúng ta muốn lấy danh sách các sản phẩm giá cao nhất, với phân trang và số lượng sản phẩm trên mỗi trang.

const pageNumber = 2;
const pageSize = 10; Product.aggregate([ { $sort: { price: -1 } }, { $skip: (pageNumber - 1) * pageSize }, { $limit: pageSize }
])
.exec((err, products) => { if (err) { console.error(err); } else { console.log(products); }
});

Trong ví dụ này, chúng ta sử dụng $sort để sắp xếp danh sách sản phẩm theo giá giảm dần. Sau đó, chúng ta sử dụng $skip$limit để thực hiện phân trang, lấy trang thứ hai và giới hạn số lượng sản phẩm trên mỗi trang là 10.

Kết luận

Aggregate là một công cụ mạnh mẽ cho việc xử lý dữ liệu phức tạp trong MongoDB với Mongoose trên Node.js. Trong bài viết này, chúng ta đã tìm hiểu cách hoạt động của Aggregate và đã cung cấp một số ví dụ về cách sử dụng Aggregate với Mongoose để thực hiện các phép toán trên tập hợp dữ liệu.

Đây chỉ là một phần nhỏ trong Aggregate và còn rất nhiều tính năng và giai đoạn khác mà bạn có thể sử dụng để tùy chỉnh các truy vấn dữ liệu của mình. Hãy khám phá thêm tài liệu chính thức của Mongoose để tìm hiểu thêm về Aggregate và các tính năng khác của nó.

Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về cách sử dụng Aggregate với Mongoose trên Node.js.

Bình luận

Bài viết tương tự

- vừa được xem lúc

TÌM HIỂU VỀ MONGODB

. 1. Định nghĩa về MongoDB. . MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*) hàng đầu, được hàng triệu người sử dụng.

0 0 31

- vừa được xem lúc

Mongo DB cho người mới bắt đầu !

Lời nói đầu. Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó).

0 0 23

- vừa được xem lúc

Áp dụng kiến trúc 3 Layer Architecture vào project NodeJS

The problem encountered. Các framework nodejs phổ biết như Express cho phép chúng ta dễ dàng tạo ra Resful API xử lí các request từ phía client một cách nhanh chóng và linh hoạt.

0 0 64

- vừa được xem lúc

Mongo DB cho người mới bắt đầu ! (P2)

Lời nói đầu. Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó).

0 0 169

- vừa được xem lúc

Xây dựng CRUD RESTful API sử dụng Node, Express, MongoDB.

Introduction. Trong phạm vi bài viết này chúng ta sẽ cùng tìm hiểu về cách tạo restful api với Node, Express và MongoDB. . Xử lý các hoạt động crud.

0 0 213

- vừa được xem lúc

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

Bài viết này mình sẽ giúp các bạn có cái nhìn tổng quan về MongoDB. Chúng ta không lạ gì với cơ sở dữ liệu quan hệ, còn với cơ sở dữ liệu phi quan hệ thì sao? MEAN stack (MongoDB, Express, AngularJS,

0 0 38