zoukankan      html  css  js  c++  java
  • MONGODB 与sql聚合操作对应图

     http://blog.csdn.net/miyatang/article/details/22059165

    SQL Terms, Functions, and Concepts

                                          MongoDB Aggregation Operators

    WHERE

                                   $match

    GROUP BY

                                   $group

    HAVING

                                   $match

    SELECT

                                   $project

    ORDER BY

                                    $sort

    LIMIT

                                    $limit

    SUM()

                                     $sum

    COUNT()

                                     $sum

    join

    No direct corresponding operator; however, the $unwindoperator allows for somewhat similar functionality, but with fields embedded within the document.

    实例:
    [td]

    SQL Example

    MongoDB Example

    Description

    SELECT COUNT(*) AS countFROM orders

    db.orders.aggregate( [   { $group: { _id: null,               count: { $sum: 1 } } }] )

    Count all records fromorders

    SELECT SUM(price) AS totalFROM orders

    db.orders.aggregate( [   { $group: { _id: null,               total: { $sum: "$price" } } }] )

    Sum theprice field from orders,这个非常有用,看官方说明,说_ID是必须,但没想到可以为NULL,

    SELECT cust_id,       SUM(price) AStotalFROM ordersGROUP BY cust_id

    db.orders.aggregate( [   { $group: { _id: "$cust_id",               total: { $sum: "$price" } } }] )

    For each uniquecust_id, sum the pricefield.

    SELECT cust_id,       SUM(price) AStotalFROM ordersGROUP BYcust_idORDER BY total

    db.orders.aggregate( [   { $group: { _id: "$cust_id",               total: { $sum: "$price" } } },   { $sort: { total: 1 } }] )

    For each uniquecust_id, sum the pricefield, results sorted by sum.

    SELECT cust_id,       ord_date,      SUM(price) AS totalFROM ordersGROUPBY cust_id, ord_date

    db.orders.aggregate( [   { $group: { _id: { cust_id: "$cust_id",                      ord_date: "$ord_date" },               total: { $sum: "$price" } } }] )

    For each uniquecust_id,ord_dategrouping, sum the pricefield.

    SELECT cust_id, count(*)FROMordersGROUP BY cust_idHAVING count(*)> 1

    db.orders.aggregate( [   { $group: { _id: "$cust_id",               count: { $sum: 1 } } },   { $match: { count: { $gt: 1 } } }] )

    For cust_idwith multiple records, return thecust_id and the corresponding record count.

    SELECT cust_id,       ord_date,      SUM(price) AS totalFROM ordersGROUPBY cust_id, ord_dateHAVING total > 250

    db.orders.aggregate( [   { $group: { _id: { cust_id: "$cust_id",                      ord_date: "$ord_date" },               total: { $sum: "$price" } } },   { $match: { total: { $gt: 250 } } }] )

    For each uniquecust_id,ord_dategrouping, sum the pricefield and return only where the sum is greater than 250.

    SELECT cust_id,       SUM(price) astotalFROM ordersWHERE status ='A'GROUP BY cust_id

    db.orders.aggregate( [   { $match: { status: 'A' } },   { $group: { _id: "$cust_id",               total: { $sum: "$price" } } }] )

    For each uniquecust_id with status A, sum the pricefield.

    SELECT cust_id,       SUM(price) astotalFROM ordersWHERE status ='A'GROUP BY cust_idHAVING total > 250

    db.orders.aggregate( [   { $match: { status: 'A' } },   { $group: { _id: "$cust_id",               total: { $sum: "$price" } } },   { $match: { total: { $gt: 250 } } }] )

    For each uniquecust_id with status A, sum the pricefield and return only where the sum is greater than 250.

    SELECT cust_id,       SUM(li.qty) asqtyFROM orders o,     order_lineitem liWHERE li.order_id = o.idGROUP BYcust_id

    db.orders.aggregate( [   { $unwind: "$items" },   { $group: { _id: "$cust_id",               qty: { $sum: "$items.qty" } } }] )

    For each uniquecust_id, sum the corresponding line item qtyfields associated with the orders.

    SELECT COUNT(*)FROM (SELECTcust_id, ord_date      FROM orders      GROUP BY cust_id, ord_date) asDerivedTable

    db.orders.aggregate( [   { $group: { _id: { cust_id: "$cust_id",                      ord_date: "$ord_date" } } },   { $group: { _id: null, count: { $sum: 1 } } }] )

  • 相关阅读:
    一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, Firefox),也可以借助Node.js或者Rhino在服务端运行。
    关于jquery选择器的一些注意
    几种序列化协议(protobuf,xstream,jackjson,jdk,hessian)相关数据对比
    测试:你自认为理解了JavaScript?
    如何移除相邻两个 display: inlineblock 元素间的间隔
    Linux TCP 连接数修改
    CSS lineheight 和 verticalalign 精解(上篇)_依然梦想_百度空间
    pageX,clientX,offsetX,layerX的那些事
    在html5下 关于img与div之间的缝隙
    iframe自适应高度详解(希望对大家有用)
  • 原文地址:https://www.cnblogs.com/jayruan/p/5159197.html
Copyright © 2011-2022 走看看