• 试水mongodb er


    1)data ready

    var a = {"name":"zhekou","CharDate":"2015-12-01","Detail":
    [{"DetailID":1,"Abstract":"1a","LenderAmt":20,"DebtAmt":0,"BaseAmt":20},
    {"DetailID":2,"Abstract":"2a","LenderAmt":3,"DebtAmt":0,"BaseAmt":3},
    {"DetailID":3,"Abstract":"3a","LenderAmt":4,"DebtAmt":0,"BaseAmt":4}]
    }

    db.Voucher.insert(a);

    var a = {"name":"zhekou","CharDate":"2015-12-01","Detail":
    [{"DetailID":4,"Abstract":"1a","LenderAmt":56,"DebtAmt":0,"BaseAmt":56},
    {"DetailID":5,"Abstract":"2a","LenderAmt":34,"DebtAmt":0,"BaseAmt":34},
    {"DetailID":6,"Abstract":"3a","LenderAmt":87,"DebtAmt":0,"BaseAmt":87}]
    }
    db.Voucher.insert(a); 

    2)function

    db.Voucher.aggregate(
    {$unwind:"$Detail"},
    {$match:{"Detail.Abstract":/a/}},
    {$project:{ _id:0, amount: "$Detail.BaseAmt",Abstract:"$Detail.Abstract"}},
    {$group:{_id:"$Abstract",total:{$sum:"$amount"}}}
    )

    2_1)

    $match:过滤后再分组,Detail.Abstract,虽然用了unwind打开,但是还是要用Detail.前缀引用

    $project:重命名

    $:引用

    $group:分组,_id:分组by**,$sum:相加

    3)result

    /* 0 */
    {
    "result" : [
    {
    "_id" : "3a",
    "total" : 91
    },
    {
    "_id" : "2a",
    "total" : 37
    },
    {
    "_id" : "1a",
    "total" : 76
    }
    ],
    "ok" : 1
    }

  • 相关阅读:
    luogu P1353 [USACO08JAN]跑步Running
    bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊
    [USACO3.2]Sweet Butter
    [SDOI2009]Elaxia的路线
    [USACO5.4]Telecowmunication
    [洛谷1681]最大正方形II
    [清华集训2014]奇数国
    [洛谷2814]家谱
    [洛谷1868]饥饿的奶牛
    [HNOI2003]激光炸弹
  • 原文地址:https://www.cnblogs.com/Ellfelo/p/aggregate_unwind.html
Copyright © 2020-2023  润新知