【发布时间】: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
这里我使用数据库mongodb和node.js来执行程序
我收到如下错误:
(node:12276) UnhandledPromiseRejectionWarning: MongoError: $multiply only supports numeric types, not string..
【问题讨论】:
-
使用 $toInt、$toDouble、$toLong 将类型转换为整数,例如
$multiply:[{ $toInt: '$quantity' },{ $toInt: '$product.Price' }]