Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.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
Javascript 对数组内集合中的文档进行计数_Javascript_Node.js_Mongodb_Api - Fatal编程技术网

Javascript 对数组内集合中的文档进行计数

Javascript 对数组内集合中的文档进行计数,javascript,node.js,mongodb,api,Javascript,Node.js,Mongodb,Api,我试图计算集合中数组中的文档数。 下面您可以看到模式 我想计算的是每种类型的expenseType,但由于数组中有这个值,我不知道如何构建查询来获取这个值。 最终结果应该是: 水:2 |无线网络:1 当我添加新的水时,应该是水:3,依此类推 下面我展示了我正在尝试做什么,但收到了一个错误 router.get("/getExpense", ensureAuthenticated, (req, res) => { House.aggregate( { $match:

我试图计算集合中数组中的文档数。 下面您可以看到模式

我想计算的是每种类型的expenseType,但由于数组中有这个值,我不知道如何构建查询来获取这个值。 最终结果应该是: 水:2 |无线网络:1

当我添加新的水时,应该是水:3,依此类推

下面我展示了我正在尝试做什么,但收到了一个错误

router.get("/getExpense", ensureAuthenticated, (req, res) => {
  House.aggregate(
    {
      $match: {
        userID: req.user.id,
        expensesHouse: { $elemMatch: { status: "Public" } }
      }
    }
    { $group: { _id: "$Water", price: { $sum: 1 } } }
  ).then(house => {
    console.log(res.json({ house }));
  });
});
之所以使用res.json,是因为我发送了一个带有值的json,并通过抓取来构建图表

这是我正在做的

getData();
async function getData() {
  const res = await fetch("/houses/getExpense", {
    headers: {
      "Content-Type": "application/json",
      Accept: "application/json"
    }
  })
    .then(res => res.json())
    .then(data => {
      console.log(data);
    });
}
你在找我。它创建可以分组的中间条目

House.aggregate(
    {
      $match: {
        userID: req.user.id,
        expensesHouse: { $elemMatch: { status: "Public" } }
      }
    },
    {
      $unwind: '$expensesHouse',
    },
    { $group: { _id: "$expensesHouse.expenseType", price: { $sum: 1 } } }
  ).then(house => {
    console.log(res.json({ house }));
  });

我还修复了最后一个组id。

成功了!只是将“价格”改为“总价”,这样更有意义。