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 } 
])

 

$lookup 表关联
db.order.aggregate([ 
    { 
        $lookup: 
            { 
                from: "order_item", 
                localField: "order_id", 
                foreignField: "order_id", 
                as: "items" 
            } 
    },
   { 
        $project:{ trade_no:1, all_price:1,items:1 } 
    }, 
    { 
        $match:{"all_price":    {$gte:90}} 
    }, 
    { 
        $sort:{"all_price":-1}
    },
])     

  

            

  

 

posted @ 2020-09-12 22:27  爱跑步的乌龟  阅读(166)  评论(0编辑  收藏  举报