angularjs - mongodb聚合中的多个参数
问题描述
我试图在我的 mongodb 中获取多个参数,我的代码在这里获取日期的不同值并对其进行计数,但是我如何添加另一个参数来获取例如另一组不同的和计数。
例子:
这是我的代码的输出:
[ { _id: '05-09-2019', count3: 1 },
{ _id: '06-09-2019', count3: 1 },
{ _id: '06-21-2019', count3: 1 },
{ _id: '06-30-2019', count3: 5 },]
我怎样才能做到这一点:
[ { _id: '05-09-2019', count: 1, branch: America, count2: 1},
{ _id: '06-09-2019', count: 1, branch: Germany,count2: 1},
{ _id: '06-21-2019', count: 1, branch: Philippines,count2: 1},
{ _id: '06-30-2019', count: 5 , branch: Vietnam,count2: 1},]
这是我在计算日期时获取不同值的代码:
router.get('/blooddonationarea', function(req, res) {
Blooddonation.aggregate([{$group: {_id : "$date" , count :{$sum:1}}},{$sort: {_id: 1}}],function(err, date) {
res.json({ success: true, date: date });
//console.log(date);
});
});
我尝试在 [] 子句之后插入它,但它根本没有得到值
[{ $match: { branch: { $eq: 'Rizal' } } },{$group: {_id : "$date" , count2 :{$sum:1}}},{$sort: {_id: 1}}]
这是示例文档:
_id:5c1f47dd59cdd931f4ce98ae
blood_product_donated:"Whole Blood"
branch:"Rizal"
deferral_type:"permanent"
date:"10-22-2019"
解决方案
您可以从按日期键和分支键对文档进行分组开始,然后是进一步的管道步骤,您仅按上一个管道中文档上的日期键进行分组。遵循此示例将为您提供所需的结果:
router.get('/blooddonationarea', (req, res) => {
Blooddonation.aggregate([
{ '$group': {
'_id': { 'date': '$date', 'branch': '$branch' },
'count': { '$sum': 1 }
} },
{ '$group': {
'_id': '$_id.date',
'count': { '$sum': '$count' },
'branch': { '$first': '$_id.branch' },
'count2': { '$first': '$count' }
} },
{ '$sort': { '_id': 1 } }
], (err, date) => {
console.log(date);
if (err) throw err
res.json({ success: true, date });
});
});
推荐阅读
- javascript - “CORS 政策已阻止访问获取”Chrome 扩展程序错误
- java - 使用多线程代码防止 DOS 攻击
- scheme - 在过程调用中强制从左到右的评估顺序
- amazon-web-services - 使用 amazon mqtt 从 esp8266 发布按钮按下
- menu - 在 SwiftUI 中创建菜单 - 接收 [UILog] Called -[UIContextMenuInteraction updateVisibleMenuWithBlock:] 的输出消息
- javascript - Angular 10 测试:组件解析器数据订阅错误
- swift - 从 UINavigationController 扩展设置导航项
- django - 我有一个错误 Dockerfile 与 Django 。如何解决?
- php - 使用 PDO 将数据提取到表中导致没有值
- excel - 如何跨两个潜艇使用范围变量?