业务代码图示

从上面可以看到已经实现统计分组了,下面详细列出代码:
数据操作底层公共代码:
///
/// 查询数据集,可分组统计,不能分页
///
/// 数据集名
/// 查询条件或分组数据
///
public async Task> GetDataJsonListGroup(string CollectionName, PipelineDefinition ppdf)
{
try
{
var colt = Collection(CollectionName);
var rtn = await colt.AggregateAsync(ppdf);
return rtn.ToList();
}
catch
{
return null;
}
}
数据访问代码:
///
/// 获取短信分组统计
///
///
///
public async Task> GetSmsSendGroup(PipelineDefinition ppdf)
{
var rtn = await mgdb.GetDataJsonListGroup("tbSmsSendRecord", ppdf);
return rtn;
}
业务代码:
///
/// 分组统计短信发送记录
///
/// 开始时间
/// 结束时间
///
public async Task GetSmsSendGroup(string begintime, string endtime)
{
//$SmsType 分组字段
string groupjson = "{$group:{\"_id\":\"$SmsType\",\"RrcordCount\": {\"$sum\":1}}}";
string matchjson = "{$match:{\"SendTime\":{$gte:\"" +
Convert.ToDateTime(begintime).ToString("yyyy-MM-dd HH:mm:ss") //开始时间
+ "\",$lte:\"" +
Convert.ToDateTime(endtime).ToString("yyyy-MM-dd HH:mm:ss") //结束时间
+ "\"}}}";
IList stages = new List
{
new JsonPipelineStageDefinition(matchjson), //查询条件
new JsonPipelineStageDefinition(groupjson) //分组统计字段
};
var ppdf = new PipelineStagePipelineDefinition(stages);
var rtn = await new DAL.Emergency.SmsSendRecord().GetSmsSendGroup(ppdf);
return rtn.ToJson();
}
评论 (共 0 条)