[ mongodb ] aggregation example

MySQL中可以做 JOIN, GROUP BY, ..
但在Mongodb就必須靠 aggregation
像Left outer join在Mongodb要用特別的operator : $lookup
官網有提供一些簡單的MySQL to Mongodb aggregate的語法範例

小舉例
db.collection('collName').aggregate([
    { 
        $match: matchQuery         // 搜尋條件式, 符合的documents傳給下個階段
    },
    {
        $project: {                        // 將上個階段的documents取出指定欄位傳給下個階段
            user: 1, place: 1, createdAt: 1 
        }  
    },
    {
        $group: {                      // 將上個階段的documents給group成指定的物件
            _id: "$user",              // _id 是必須要有的
            place: {                    // 要輸出的place欄位是陣列 [ { _id: xxx }, { _id: xxx}, .. ]
                $push: {
                    _id: "$place"
                }
        }
    }
},
{ $sort: { createdAt: -1 } },
{ $limit: limit }
], function(err, aggregations) {

});

目前Aggregate在Mongodb原生的套件中沒有提供Promise
所以只能用callback去處理這段!

留言

這個網誌中的熱門文章

[MySQL] schema 與資料類型優化

[翻譯] 介紹現代網路負載平衡與代理伺服器