Mongodb在CSharp里实现Aggregate实例
发布时间 - 2026-01-11 01:08:11 点击率:次今天主要用了一个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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Laravel如何处理CORS跨域请求?(配置示例)
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Laravel怎么清理缓存_Laravel optimize clear命令详解
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
公司网站制作需要多少钱,找人做公司网站需要多少钱?
JavaScript如何实现路由_前端路由原理是什么
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
如何用PHP快速搭建高效网站?分步指南
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
EditPlus中的正则表达式 实战(1)
iOS发送验证码倒计时应用
phpredis提高消息队列的实时性方法(推荐)
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
如何快速搭建高效香港服务器网站?
Android仿QQ列表左滑删除操作
网站图片在线制作软件,怎么在图片上做链接?
Laravel怎么调用外部API_Laravel Http Client客户端使用
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
如何在万网自助建站中设置域名及备案?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
Laravel如何实现文件上传和存储?(本地与S3配置)
Android okhttputils现在进度显示实例代码
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
如何用PHP快速搭建CMS系统?
如何快速搭建FTP站点实现文件共享?
专业商城网站制作公司有哪些,pi商城官网是哪个?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Python文件操作最佳实践_稳定性说明【指导】
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
如何在Windows服务器上快速搭建网站?
Python进程池调度策略_任务分发说明【指导】
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Laravel如何创建自定义Facades?(详细步骤)
如何自定义建站之星模板颜色并下载新样式?
Laravel如何实现多对多模型关联?(Eloquent教程)
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel如何使用Livewire构建动态组件?(入门代码)
Python文件流缓冲机制_IO性能解析【教程】
JS去除重复并统计数量的实现方法
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程

