Phương thức aggregate() trong MongoDB
Với Aggregation trong MongoDB, bạn nên sử dụng phương thức aggregate().
Cú pháp
Cú pháp cơ bản của phương thức aggregate() là như sau:
Ví dụ
Trong Collection, bạn có dữ liệu sau:
Từ Collection trên, nếu bạn muốn hiển thị một danh sách có bao nhiêu bài hướng dẫn được viết bởi mỗi người dùng, thì bạn sẽ sử dụng phương thức aggregate() như sau:
Truy vấn SQL tương đương cho trường hợp trên là select by_user, count(*) from mycol group by by_user.
Trong ví dụ trên, chúng ta đã nhóm các Document bởi trường by_user và trên mỗi lần xuất hiện của by_user, giá trị trước đó của tổng sẽ được tăng lên. Có một danh sách các biểu thức Aggregation có sẵn, được liệt kê dưới đây:
Biểu thức
Miêu tả
Ví dụ
$sum
Tổng giá trị được xác định từ tất cả Document trong Collection đó
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}])
$avg
Tính trung bình của tất cả giá trị đã cho từ tất cả Document trong Collection đó
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}])
$min
Lấy giá trị nhỏ nhất của các giá trị từ tất cả Document trong Collection đó
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}])
$max
Lấy giá trị lớn nhất của các giá trị từ tất cả Document trong Collection đó
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}])
$push
Chèn giá trị vào trong một mảng trong Document kết quả
db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}])
$addToSet
Chèn giá trị tới một mảng trong Document kết quả, nhưng không tạo các bản sao
db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}])
$first
Lấy Document đầu tiên từ Source Document theo nhóm
db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}])
$last
Lấy Document cuối cùng từ Source Document theo nhóm
db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}])
Last updated