【问题标题】:Count distinct values in mongodb then count sum计算 mongodb 中的不同值,然后计算总和
【发布时间】:2019-06-09 01:30:37
【问题描述】:

我有一个来自我的 mongodb 的示例文档:

blood_group:A,
blood_category:whole blood,
num_stock:11

blood_group:B,
blood_category:whole blood, 
num_stock:10

blood_group:AB,
blood_category:platelet,
num_stock:10

我如何计算总计的值 num_stock 具有不同的值 blood_category我期待这样:

[ { blood_category: whole blood, count: 21 },
  { blood_category: platelet, count: 10 }
]

我尝试了什么:

 router.get('/blood', function(req, res) {
       Blooddonation.aggregate([{$group: {_id : "$blood_category" , count :{$sum:1}}},{$sort: {_id: 1}}],function(err, blood) {     
       res.json({ success: true, date: blood });
    });           
 });

使用上面的示例,得出:

[{blood_category: 'whole blood', count:2},
{blood_category: 'platelet', count:1}]

【问题讨论】:

    标签: node.js angularjs mongodb mean-stack


    【解决方案1】:

    你需要count :{$sum:"$num_stock"}

     router.get('/blood', function(req, res) {
           Blooddonation.aggregate([{$group: {_id : "$blood_category" , count :{$sum:"$num_stock"}}},{$sort: {_id: 1}}],function(err, blood) {     
           res.json({ success: true, date: blood });
        });           
     });
    

    样本收集

    > db.xoxo.find()
    { "_id" : ObjectId("5c3d4b84d74266980e8db1bc"), "blood_group" : "A", "blood_category" : "whole blood", "num_stock" : 11 }
    { "_id" : ObjectId("5c3d4b84d74266980e8db1bd"), "blood_group" : "B", "blood_category" : "whole blood", "num_stock" : 10 }
    { "_id" : ObjectId("5c3d4b84d74266980e8db1be"), "blood_group" : "AB", "blood_category" : "platelet", "num_stock" : 10 }
    

    结果

    > db.xoxo.aggregate([{$group: {_id: "$blood_category", count : {$sum : "$num_stock"}}}])
    { "_id" : "platelet", "count" : 10 }
    { "_id" : "whole blood", "count" : 21 }
    >
    

    【讨论】:

    • 它正在返回 [object Object]
    • 结果应该只有两个:全血:21 和血小板:10
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多