【问题标题】:How to do math calculation in node.js using mongodb document fields?如何使用 mongodb 文档字段在 node.js 中进行数学计算?
【发布时间】:2021-07-27 18:29:16
【问题描述】:

我想使用来自 mongodb 数据库的数据计算一个人的 BMI,并希望将结果存储在与 "bmi":xxx 相同的文档中。我的数据库如下所示。

数据库

{
  "_id": {
    "$oid": "5d6c9cacfd9f1a1c30fed1c6"
  },
  "fname": "virat",
  "weight": 65,
  "height": 170
}

node.js(这不起作用)

app.put('/home/bmi',function(req,res){
  var data=[
    {
      "$project":{
        "bmi":{
          "$floor":{
            "$multiply":[
              {
                "$divide":[
                  "$weight",{"$pow":["$height",2]}
                ]
              },
              10000
            ]
          }
        }
      }
    }
  ]
  db.collection('users').aggregate(data,function(error,result){
    if(error) throw error
    console.log(data)
  })
})

根据计算,bmi =floor((weight/pow(height,2))*10000)

【问题讨论】:

  • 您的聚合查询在没有app.put 的情况下工作正常吗?而且我猜您使用的是本机 mongo 驱动程序而不是 mongoose?
  • 是的,我正在使用本机 mongodb。不,我的聚合不起作用。

标签: node.js mongodb node-mongodb-native


【解决方案1】:

聚合后添加 .toArray() 就可以像这样使用promise了

    app.put('/home/bmi',function(req,res){
        var data=[
        {
          "$project":{
            "bmi":{
              "$floor":{
                "$multiply":[
                  {
                    "$divide":[
                      "$weight",{"$pow":["$height",2]}
                    ]
                  },
                  10000
                ]
              }
            }
          }
        }
        ]
        db.collection('users').aggregate(data).toArray()
        .then(r=>{
            console.log(r)

         }
         .catch(e=>{
             throw e
         })
    
    })

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多