在一个查询中计算具有多个条件的文档

时间:2019-01-08 18:22:59

标签: node.js mongodb mongoose

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

待处理:35 已批准:97 拒绝:12

我有这个,但它只算“待定”。是否可以在一个查询中计算所有3个查询,还是我需要运行3个单独的查询并为每个查询获得结果?

Product.countDocuments({status: 'pending', userId: req.session.user._id})
.then(pending => {
    if (!pending) {
        return next();
    }
    req.pending = pending;
    next();
})
.catch(err => {
    console.log(err);
});

编辑:在某种程度上,我已经做到了这一点,在控制台中,我得到了所有结果的计数,但只需要弄清楚如何将每个结果放入自己的变量中即可。

Product.aggregate([
   { $group: { _id: { status: "$status"}, totalStatus: {$sum: 1} } }
])
.then(function (res) {
    console.log(res);
    next();
  });

1 个答案:

答案 0 :(得分:2)

要在单个查询中查找多个计数,请使用mongodb聚合框架来分多个阶段处理数据,您的问题已得到解答,请访问下面的链接。我将为您更新查询。 Multiple Counts with single query in mongodb

chrome.browserAction.onClicked.addListener(function(tab) {
    chrome.tabs.executeScript(null, {
        code: "alert(document.querySelector('p').innerText)"
    });
});