Javascript 统计状态记录(批准、待定、拒绝)并将值返回到各自的变量中
我正在尝试统计mongoDB中的文档(使用mongoose),其中记录的状态为pending、approved和rejected。所以,我基本上是想得到一个结果,在这个结果中,我可以显示每一个的计数,并在我的视图中显示它 我想把这些值保存在变量中,我可以在不同的地方使用,比如:Javascript 统计状态记录(批准、待定、拒绝)并将值返回到各自的变量中,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我正在尝试统计mongoDB中的文档(使用mongoose),其中记录的状态为pending、approved和rejected。所以,我基本上是想得到一个结果,在这个结果中,我可以显示每一个的计数,并在我的视图中显示它 我想把这些值保存在变量中,我可以在不同的地方使用,比如: const pending = ..... const approved = .... const rejected = ..... 我曾尝试使用聚合函数并运行一个循环,该循环获取我所需的所有数据,但我不知道如何将数据
const pending = .....
const approved = ....
const rejected = .....
我曾尝试使用聚合函数并运行一个循环,该循环获取我所需的所有数据,但我不知道如何将数据实际放入上述三个变量中
Product.aggregate([
{ $group: { _id: { status: "$status" }, totalStatus: { $sum: 1 } } }
])
上面的代码还给了我这个(我还没有拒绝的值)
然后我运行了一个循环并使用了分解:
.then(status => {
for (const current of status) {
const [status, total] = [current._id.status, current.totalStatus];
console.log(status + ': ' + total);
}
next();
})
这给了我:
pending: 15
approved: 27
但这仍然不是我真正想要的。我需要将这些值放入它们自己的变量中。我怎样才能做到这一点?您通过聚合获得了状态和文档计数。请尝试将这些值放入相应的变量中:
let pending, approved, rejected;
switch (status.toLowerCase()) {
case 'pending': pending = total;
break;
case 'approved' : approved = total;
break;
case 'rejected': rejected = total;
break;
}
将开关包括在循环中。通过聚合获得状态和文档计数。请尝试将这些值放入相应的变量中:
let pending, approved, rejected;
switch (status.toLowerCase()) {
case 'pending': pending = total;
break;
case 'approved' : approved = total;
break;
case 'rejected': rejected = total;
break;
}
在循环中包含开关。这似乎有效!这样做是正确的,还是数据库应该按照我需要的方式进行工作并提供结果?如果我们可以使用mongoose本身来实现这一点,那就太好了。但我不确定这是否可能!可以我会等着看,如果我在这里得到更多的答案,看看是否可以使用猫鼬。这似乎是工作!这样做是正确的,还是数据库应该按照我需要的方式进行工作并提供结果?如果我们可以使用mongoose本身来实现这一点,那就太好了。但我不确定这是否可能!可以我将等待,看看我是否在这里得到更多的答案,看看是否可以使用猫鼬。