今天主要用了一个mongodb.driver里的分组,事实上在网上介绍这方面的文章非常少,以至于我在出现问题后,无法找到一个正确的解决方案,最后还是通过异常信息找到的解决方法,所以感觉自己更应该去写一篇关于如何在C#驱动里进行聚合Aggregate的文章!
/// <summary>
/// 返回UI消息树
/// </summary>
/// <returns></returns>
public static string GetMongoLog(DateTime? fromDate, DateTime? toDate, int page = 1)
{
string from = DateTime.Now.Date.ToString("yyyy-MM-dd");
string to = DateTime.Now.Date.AddDays(1).ToString("yyyy-MM-dd");
if (fromDate.HasValue)
{
from = fromDate.Value.ToString("yyyy-MM-dd");
}
if (toDate.HasValue)
{
to = toDate.Value.ToString("yyyy-MM-dd");
}
var stages = new List<IPipelineStageDefinition>();
stages.Add(new JsonPipelineStageDefinition<BsonDocument, BsonDocument>("{$match:{AddTime:{$gt:ISODate('" + from + "'),$lt:ISODate('" + to + "')}}}"));
stages.Add(new JsonPipelineStageDefinition<BsonDocument, BsonDocument>("{$group:{_id: \"$RootId\", count: {$sum: 1}}}"));
stages.Add(new JsonPipelineStageDefinition<BsonDocument, BsonDocument>("{$skip:" + page * 5 + "}"));
stages.Add(new JsonPipelineStageDefinition<BsonDocument, BsonDocument>("{$limit:5}"));
var pipeline = new PipelineStagePipelineDefinition<BsonDocument, BsonDocument>(stages);
var result = NoSql.MongodbManager<LoggerContext>.Collection.Aggregate(pipeline);
StringBuilder str = new StringBuilder();
str.Append("<ol class='treeMsg'>");
foreach (var item in result.ToList())
{
var timer = new List<DateTime>();
var old = NoSql.MongodbManager<LoggerContext>.Instance.Find(i => i.RootId == item.Values.ToArray()[0].ToString() && i.ParentId == null).FirstOrDefault();
timer.Add(old.AddTime);
str.Append("<li style='margin:5px;border:1px dashed #aaa'>");
str.AppendFormat("<span style='color:red;'>{0}</span><span style='color:green'>{1}</span><span>{2}</span>"
, old.Url
, old.MessageBody
, old.AddTime);
MsgTree(str, old.ChildId, timer);
str.AppendFormat("<p><b><em>本次请求用时{0}毫秒({1}秒)<em></b></p>"
, (timer.Max() - timer.Min()).TotalMilliseconds
, (timer.Max() - timer.Min()).TotalSeconds);
str.Append("</li>");
}
str.Append("</ol>");
return str.ToString();
}
注意,目前mongodb for C#这个驱动,在进行Aggregate时,只支持BsonDocument类型,也就是说,你的集合collection也必须返回的是BsonDocument,而实体类型是不可以被认出的,这点要注意.
也正是如此,所以我们的mongo封装时,别忘记公开一个BsonDocument的对象供聚合使用!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# mongodb
# aggregate
# csharp
# c
# 使用aggregate在MongoDB中查询重复数据记录的方法
# MongoDB aggregate 运用篇个人总结
# nodejs+mongodb aggregate级联查询操作示例
# mongodb中非常好用的Aggregate入门教程
# MongoDB中aggregate()方法实例详解
# 的是
# 我在
# 不可以
# 要注意
# 用了
# 解决方法
# 大家多多
# 该去
# 写一篇
# 更应
# 别忘记
# 也就是说
# 事实上
# 在网上
# 如何在
# dd
# MM
# var
# HasValue
# AddDays
相关文章:
如何通过服务器快速搭建网站?完整步骤解析
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何在阿里云部署织梦网站?
如何快速上传自定义模板至建站之星?
如何获取PHP WAP自助建站系统源码?
如何在万网ECS上快速搭建专属网站?
开封网站制作公司,网络用语开封是什么意思?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
如何选择可靠的免备案建站服务器?
网站制作话术技巧,网站推广做的好怎么话术?
制作门户网站的参考文献在哪,小说网站怎么建立?
如何在建站主机中优化服务器配置?
公司网站制作价格怎么算,公司办个官网需要多少钱?
,如何利用word制作宣传手册?
建站之星如何取消后台验证码生成?
如何打造高效商业网站?建站目的决定转化率
红河网站制作公司,红河事业单位身份证如何上传?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
无锡营销型网站制作公司,无锡网选车牌流程?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
网站微信制作软件,如何制作微信链接?
如何批量查询域名的建站时间记录?
建站VPS推荐:2025年高性能服务器配置指南
如何用狗爹虚拟主机快速搭建网站?
如何通过多用户协作模板快速搭建高效企业网站?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
已有域名如何免费搭建网站?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
小型网站制作HTML,*游戏网站怎么搭建?
如何快速使用云服务器搭建个人网站?
招商网站制作流程,网站招商广告语?
建站主机CVM配置优化、SEO策略与性能提升指南
建设网站制作价格,怎样建立自己的公司网站?
官网网站制作腾讯审核要多久,联想路由器newifi官网
焦点电影公司作品,电影焦点结局是什么?
太原网站制作公司有哪些,网约车营运证查询官网?
如何通过西部建站助手安装IIS服务器?
如何配置IIS站点权限与局域网访问?
装修招标网站设计制作流程,装修招标流程?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
如何在万网主机上快速搭建网站?
如何通过FTP服务器快速搭建网站?
文字头像制作网站推荐软件,醒图能自动配文字吗?
建站之星如何助力企业快速打造五合一网站?
如何彻底删除建站之星生成的Banner?
*请认真填写需求信息,我们会在24小时内与您取得联系。