Mongodb如果那么其他,放松

时间:2016-12-16 08:10:52

标签: mongodb aggregation-framework

我有像下面这样的documnet结构。

{
    "_id" : ObjectId("5852c49ba35fe"),
    "date" : "20100101",    
    "p9" : "PWR_FSA",
    "p10" : "00278",
    "p11" : "002",    
    "gs" : [ 
        {
            "tis" : [ 
                {
                    "rr" : "00",
                    "ul" : [ 
                        {
                            "amnt" : 1.0,
                             "su" : "N"
                        }
                    ]
                }
            ],
            "type" : "PQR"
        }
    ],
    "trig_id" : "255"    
}


{
    "_id" : ObjectId("59fdc49ba35fe"),
    "date" : "20100101",    
    "p9" : "PWR_FSA",
    "p10" : "00278",
    "p11" : "002",    
    "gs" : [ 
        {
            "mis" : [ 
                {
                    "rr" : "00",
                    "tl" : [ 
                        {
                            "amnt" : -1.5,
                             "su" : "N"
                        }
                    ]
                }
            ],
            "type" : "ABC"
        }
    ],
    "trig_id" : "255"    
}

现在我想在p9的基础上汇总金额,所以我写了下面的查询。 我当时得到了一个错误:{{$ unwind:" $ gs.tis"},{$ unwind:" $ gs.tis.ul"}},

我哪里错了?我也可以在Then子句中展开吗?

db.TB.aggregate({$match :{$and :[{"trig_id" : "255"}]}},
{ $unwind : "$gs" },
{$project: {_id :1,    
            "amnt" :{ 
                $concat : [ { 
            $cond : { if :  {"gs.type" : {$eq : "PQR"}} ,
                                  then : {{$unwind : "$gs.tis"},{$unwind : "$gs.tis.ul"}},
                                      $cond : { if : {$match : {"gs.tis.ul.su": "N"}} , then : {$gs.tis.ul.amnt} , else: {""}}
                                  else : "" }    
                              }]}},
            "total" : { $sum : 1 }
 }},
 {$group  :{"_id": "$p9",
            "amnt": {"$sum": "$amnt"}
          }
})

0 个答案:

没有答案