MongoDB:mongodb中使用 $cond条件来完成类似case when then的功能

exports.sumByGSAsync = function (opts) {
    var results = {error_code: -1, error_msg: "error"};
    var beginDate=opts.beginDate;
    var endDate=opts.endDate;
    var pipeline =[
        {
            $match: {
                sjbh: {$gte: beginDate, $lte:endDate}
            }
        },
        {
            $group: {
                _id:  "$gsbh",
                totaltxl: {$sum: { $cond: { if: { $ne: [ "$totalnum","" ] }, then:"$txl" , else: 0 }}},
                totalbmynum: {$sum: "$bmynum"}
            }
        },
        {
            $project: {
                _id: 0,
                gsbh: "$_id",
                totaltxl: "$totaltxl",
                totalbmynum: "$totalbmynum",
                ratio: { $divide: [  "$totalbmynum", { $cond:{if: { $eq: [ "$totaltxl",0 ] }, then:1 , else: "$totaltxl" }}] }
            }
        },
        {$sort: {ratio: -1}}
    ];

    return opts.dbs.csdb.collection("permydfx").aggregateAsync(pipeline)
        .timeout(opts.configs.timeoutnormal)
        .then(function (value) {
            .....
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值