zoukankan      html  css  js  c++  java
  • 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}
        },
    ])     
    

      

                

      

     

  • 相关阅读:
    环形缓冲区: ringbuf.c
    Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法与解析
    list.h在用户态下的应用
    如何优雅的拔盘?
    谨慎调整内核参数:vm.min_free_kbytes
    Linux内核tracepoints
    网卡多队列
    How to use pthread_create && mutex?
    美国电子工程师最值得打工的50个东家
    关于零点和极点的讨论
  • 原文地址:https://www.cnblogs.com/Essaycode/p/13659003.html
Copyright © 2011-2022 走看看