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怎么导出Excel文件_Laravel Excel插件使用教程  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel如何保护应用免受CSRF攻击?(原理和示例)  七夕网站制作视频,七夕大促活动怎么报名?  佐糖AI抠图怎样调整抠图精度_佐糖AI精度调整与放大细化操作【攻略】  Laravel如何处理文件下载请求?(Response示例)  Laravel如何使用Sanctum进行API认证?(SPA实战)  高端企业智能建站程序:SEO优化与响应式模板定制开发  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel Docker环境搭建教程_Laravel Sail使用指南  如何获取上海专业网站定制建站电话?  用yum安装MySQLdb模块的步骤方法  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  如何用PHP快速搭建CMS系统?  如何在七牛云存储上搭建网站并设置自定义域名?  香港服务器租用费用高吗?如何避免常见误区?  香港服务器租用每月最低只需15元?  如何快速查询网站的真实建站时间?  如何确保FTP站点访问权限与数据传输安全?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel如何实现本地化和多语言支持?(i18n教程)  浅述节点的创建及常见功能的实现  详解Android——蓝牙技术 带你实现终端间数据传输  网易LOFTER官网链接 老福特网页版登录地址  Laravel怎么连接多个数据库_Laravel多数据库连接配置  LinuxCD持续部署教程_自动发布与回滚机制  如何在阿里云域名上完成建站全流程?  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  长沙企业网站制作哪家好,长沙水业集团官方网站?  JavaScript中的标签模板是什么_它如何扩展字符串功能  如何快速启动建站代理加盟业务?  Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控  如何快速登录WAP自助建站平台?  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  高防服务器:AI智能防御DDoS攻击与数据安全保障  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Swift中循环语句中的转移语句 break 和 continue  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  千库网官网入口推荐 千库网设计创意平台入口  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  如何快速搭建高效香港服务器网站?  Swift中swift中的switch 语句  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】