在 sql 中有 group by 這種語句 可以針對特定欄位來做組合,甚至是加總的動作,在 mongo 中我們需要用聚合 aggregate 這種命令來完成,有點複雜但是功能強大
首先 mongo 聚合指令的使用方式
db.collection.aggregate( [ { <stage> }, ... ] )
而 aggregate 中要帶的參數是以陣列包含的多個 object,最常見的作法是這樣:
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])
我們可以看到,裡面可以包含多個 object 而每個 object 都是一個指令群體 $match 等同於我們的 find 指令, $group 則是我們要 group by 的欄位, $sort 是要排序的功能這個有沒有都無所謂
留言
張貼留言