1. 程式人生 > 實用技巧 >MongoDB 的高階查詢 aggregate 聚合管道

MongoDB 的高階查詢 aggregate 聚合管道

MongoDB Aggregation 管道操作符與表示式

$project   
要求查詢 order 只返回文件中 trade_no 和 all_price 欄位 
db.order.aggregate([ 
    { 
        $project:{ trade_no:1, all_price:1 } 
    } 
])    

 

$match
用於過濾文件。用法類似於 find() 方法中的引數。
db.order.aggregate([ 
    { 
        $project:{ trade_no:1, all_price:1 } 
    }, 
    { $match:{"all_price":{$gte:90}} } 
])        

  

$group
將集合中的文件進行分組,可用於統計結果。 統計每個訂單的訂單數量,按照訂單號分組 db.order_item.aggregate( [ 
    { 
        $group: {_id: "$order_id", total: {$sum: "$num"}} 
    } 
])    

 

$sort
將集合中的文件進行排序。
db.order.aggregate([ 
    { 
        $project:{ trade_no:1, all_price:1 } 
    }, 
    { 
        $match:{"all_price":{$gte:90}} 
    }, 
    { $sort:{"all_price":-1} } 
])    

  

$limit
db.order.aggregate([ 
    { 
        $project:{ trade_no:1, all_price:1 } 
    },
     { 
        $match:{"all_price":{$gte:90}} 
    }, 
    { 
        $sort:{"all_price":-1} 
    },
    { $limit:1 } 
])    

  

$skip
db.order.aggregate([ 
    { 
        $project:{ trade_no:1, all_price:1 } 
    }, 
    { 
        $match:{"all_price":{$gte:90}} 
    }, 
    { $sort:{"all_price":-1} },
    { $skip:1 } 
])