Node.js 通过mongodb查找计算总成本
我有一辆购物车,我正在努力计算总成本,但我尝试的一切似乎都不起作用: 篮子收集示例:Node.js 通过mongodb查找计算总成本,node.js,mongodb,e-commerce,Node.js,Mongodb,E Commerce,我有一辆购物车,我正在努力计算总成本,但我尝试的一切似乎都不起作用: 篮子收集示例: { “散列”:“xxxxx”, “项目”:[ { 产品代码:“xxx”, 数量:4 } ] } 产品集合示例: { [ { 产品代码:“xxx”, 价格:299 } ] } 我当前的代码: const basket=等待this.collection.aggregate([ {$match:{hash},//找到包含哈希的购物车 {$lookup:{from:'products',localField:'i
{
“散列”:“xxxxx”,
“项目”:[
{
产品代码:“xxx”,
数量:4
}
]
}
产品集合示例:
{
[
{
产品代码:“xxx”,
价格:299
}
]
}
我当前的代码:
const basket=等待this.collection.aggregate([
{$match:{hash},//找到包含哈希的购物车
{$lookup:{from:'products',localField:'items.productCode',foreignField:'productCode',as:'products'},
{$limit:1},
{$项目:{
_id:错,
qtys:“$items”,
产品:“$products”
//总成本//输出所有产品的总成本
}
}
]).toArray();
我需要计算出价格乘以项目数据中的数量。。。有什么办法吗
谢谢你你可以用几种不同的方法来实现这一点,我觉得最直接的方法是
$unwind
购物车的项目字段,进行计算,然后恢复结构,如下所示:
db.basket.aggregate([
{ $match: { hash } },
{
$limit: 1 // why do we need this? isn't the hash unique?
},
{
$unwind: "$items"
},
{
$lookup: {
from: "products",
localField: "items.productCode",
foreignField: "productCode",
as: "products"
}
},
{
$unwind: "$products"
},
{
$group: {
_id: "$_id",
items: {
$push: "$items"
},
products: {
$push: "$products"
},
totalCost: {
$sum: {
"$multiply": [
"$products.price",
"$items.qty"
]
}
}
}
},
{
$project: {
_id: false,
}
}
])
您可以通过几种不同的方式来实现这一点,我觉得最直接的方法是
$unwind
购物车的项目字段,进行计算,然后恢复结构,如下所示:
db.basket.aggregate([
{ $match: { hash } },
{
$limit: 1 // why do we need this? isn't the hash unique?
},
{
$unwind: "$items"
},
{
$lookup: {
from: "products",
localField: "items.productCode",
foreignField: "productCode",
as: "products"
}
},
{
$unwind: "$products"
},
{
$group: {
_id: "$_id",
items: {
$push: "$items"
},
products: {
$push: "$products"
},
totalCost: {
$sum: {
"$multiply": [
"$products.price",
"$items.qty"
]
}
}
}
},
{
$project: {
_id: false,
}
}
])
MongoDB文档中的
$multiply
示例似乎正是您想要做的:MongoDB文档中的$multiply
示例似乎正是您想要做的: