AI 智能摘要
AI 正在分析文章,生成摘要...

业务代码图示

image.png



从上面可以看到已经实现统计分组了,下面详细列出代码:


数据操作底层公共代码:

///


/// 查询数据集,可分组统计,不能分页
///
/// 数据集名
/// 查询条件或分组数据
///
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();
}