【问题标题】:$multiply only supports numeric types, not string while multiplying quantity * price , mongodb error$multiply 仅支持数字类型,不支持字符串,同时乘以数量 * 价格,mongodb 错误
【发布时间】:2020-10-25 15:56:21
【问题描述】:

我需要乘以产品数量 * 商品的价格。但是我得到$multiply在执行程序时只支持数字类型,不支持字符串。

代码如下:

let total = await db.get().collection(collection.CART_COLLECTION).aggregate([
                {
                    $group:{
                        _id:null,
                        total:{
                            $sum:{
                                $multiply:['$quantity','$product.Price']
                            }
                        }
                    }
                }
            ]).toArray()
            console.log(total);
            resolve(total[0].total)
        })

在这里我匹配userId,它在我预测的项目及其数量之后展开产品表。

然后我查找表格并获取该产品的详细信息,然后再次投影并获取数量和项目。然后我使用 group 并将 id 设置为 null,然后我尝试访问项目的总量,所以我使用了 $multiply

总计:

{
   $sum:{
        $multiply:['$quantity','$product.Price']
     }
 }

这里我需要将商品数量乘以该商品的价格。

eg: 2 * 20000 得到总数 40000

这里我使用数据库mongodbnode.js来执行程序

我收到如下错误:

(node:12276) UnhandledPromiseRejectionWarning: MongoError: $multiply only supports numeric types, not string..

【问题讨论】:

  • 使用 $toInt、$toDouble、$toLong 将类型转换为整数,例如 $multiply:[{ $toInt: '$quantity' },{ $toInt: '$product.Price' }]

标签: node.js mongodb


【解决方案1】:

需要将数量和价格转换成对应的整数数据类型。我们可以使用 $toInt、$toDouble、$toLong 来转换整数、双长数据类型 在这里,我们需要将其更改为: $multiply:[{ $toInt: '$quantity' },{ $toInt: '$product.Price' }]

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    相关资源
    最近更新 更多