Node.js 计算mongodb中的不同值,然后计算总和
我这里有一个来自mongodb的示例文档:Node.js 计算mongodb中的不同值,然后计算总和,node.js,angularjs,mongodb,mean-stack,Node.js,Angularjs,Mongodb,Mean Stack,我这里有一个来自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 [ { blood_category: whole blood, count: 21 }, { blood_ca
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
[ { 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}]
我如何计算具有不同值的totalnum_stock
的值血液类别
,我希望这样:
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
[ { 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}]
我的尝试:
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
[ { 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}]
使用上述样本,得出:
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
[ { 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}]
您需要
count:{$sum:$num_stock}
样本采集
> 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]结果应该只有两个:全血:21和血小板:10