mongoDB 聚合查询与 MySQl 查询

问题描述 投票:0回答:1

我有以下 MySQL 查询,我在其中完成了总利润,我有这样的字段:利率,信用(金钱)我想通过找到特定 ID 的总信用*(100-利率))/ 100 达到利润一个人的钱。

SELECT SUM((credit*(100-rate))/100) FROM roznamcha WHERE  (accountNum=$id AND rate!=0.0)'

我已经使用 node.js 在 mongodb 中编写了以下查询,但是无论我的数据库中有一些数据,它都会返回 null

const profit=await roznamcha.aggregate([  
    {
        $match:{
            rate:{$ne:0}
        }
    },
    {
        $group:{
            _id :'$accountNum',
        }
    },
    {
    $addFields:{
            resultMultiply:{
               $divide:[
                   {$multiply:['$credit','$rate-$100']},100
               ]

            },
sumcredit:{
    $sum:'$resultMultiply'
}
     } }
    
])
res.status(201).json({
    status:'success',
   
    data:{
       profit
    }
})

我的输出:

{
"status": "success",
"data": {
    "profit": [
        {
            "_id": "612deac8fbc8ef21a0fa4ea7",
            "resultMultiply": null,
            "sumcredit": 0
        },
        {
            "_id": "612223327e2af83a4cec1272",
            "resultMultiply": null,
            "sumcredit": 0
        }
    ]
}

谁能指导我解决这个问题?

mysql node.js mongodb mongoose aggregation-framework
1个回答
0
投票

在 $group 部分添加这些代码:

{
        $group:{
            _id :'$accountNum',
            "credit":{$first:"$credit"},
            "rate":{$first:"$rate"}

        }
    }

我认为这部分 Mongo 查询会帮助你,因为你没有获得信用和利率的值,因此它显示为空。 现在你添加这些值然后它会计算百分比。

注意:当存在 Mongo 查询时,您只需使用分而治之的方法来运行代码,您应该在此处执行查询的第一个块,如果显示所需数据,则移至第二部分,依此类推。

希望你能得到答案

© www.soinside.com 2019 - 2024. All rights reserved.