pymongo 聚合指令 aggregate group by 用法

 在 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 是要排序的功能這個有沒有都無所謂

留言