我正在尝试计算mongoDB中的文档(使用mongoose),其中记录的状态为待定,已批准和已拒绝。所以,我基本上是想得到一个结果,我可以显示每个结果并在我的视图中显示

我想将这些值保存在可以在不同位置使用的变量中,即:

const pending = .....
const approved = ....
const rejected = .....


我试图使用聚合函数并运行一个循环,该循环将我需要的所有数据都获取了,但我不知道如何将数据实际放入上述三个变量中。

   Product.aggregate([
        { $group: { _id: { status: "$status" }, totalStatus: { $sum: 1 } } }

    ])


上面的代码给了我这个(我还没有拒绝的值)

[
    {
        _id: {
            status: 'pending'
        },
        totalStatus: 15
    },
    {
        _id: {
            status: 'approved'
        },
        totalStatus: 27
    }
  ]


然后,我运行了一个循环并使用了分解:

.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;
}


将开关包含在循环中。

关于javascript - 计算状态记录(已批准,未决,已拒绝)的记录,并将值返回到其各自的变量中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54104949/

10-11 14:41