首页 > 数据库技术 > 详细

MongoDB 的高级查询 aggregate 聚合管道

时间:2020-09-12 23:44:47      阅读:68      评论:0      收藏:0      [点我收藏+]
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}
    },
])     

  

            

  

 

MongoDB 的高级查询 aggregate 聚合管道

原文:https://www.cnblogs.com/Essaycode/p/13659003.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!