永发信息网

mongodb 怎么实现类似 case when then

答案:1  悬赏:40  手机版
解决时间 2021-02-04 08:44
mongodb 怎么实现类似 case when then
最佳答案



mongodb中使用 $cond条件来完成类似case when then的功能。
node.js参考代码
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) {
.....
});
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
Don' t you think it necessary
关于王者荣耀防沉迷问题
求求你们,我孩子今天出生第六天了。脸,眼睛
移动营业大厅(莫愁大道79号移动营业大厅)地址
非法开采矿产资源机械被扣是怎么处罚的
看下这台电脑能玩侠客风云传吗?
华为荣耀7实体店多少钱 16g 和32g
中国电信(长滩营业厅)(长滩镇中心街48号中国
半年保险能退多少
河洛图文这个地址在什么地方,我要处理点事
请帮我查一下:国家发明专利号:ZL2005100130
8×47×125简便,运算怎么算?
小天鹅洗衣机XQB30-28G洗涤不工作但脱水正常.
康益药房地址在哪,我要去那里办事
材料一:中美关系虽历经曲折的.但总体不断向前
推荐资讯
主爱有多 宽广无限量 偌大江河 永不止息 恩典
咱家美业地址在什么地方,我要处理点事
因为迫于家庭压力而选择分手,复合值不值得
为什么我经常锻炼可还是容易感冒?吃什么东西
如何在网上查询UPS的报关资料
什么的小鸟作文四百字
【求问北京师范大学 数学科学学院 本科生!】
《天国的阶梯 想见你》的歌词
有一种特别细的小铁环,7, 8个放在一起,戴在
白酒洒在台球桌布上怎么清理?
用tst活酵母多长时间痘印才会消
雅集小筑我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?