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