Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 通过mongodb查找计算总成本_Node.js_Mongodb_E Commerce - Fatal编程技术网

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
示例似乎正是您想要做的: