栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

Mongodb在CSharp里实现Aggregate实例

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mongodb在CSharp里实现Aggregate实例

今天主要用了一个mongodb.driver里的分组,事实上在网上介绍这方面的文章非常少,以至于我在出现问题后,无法找到一个正确的解决方案,最后还是通过异常信息找到的解决方法,所以感觉自己更应该去写一篇关于如何在C#驱动里进行聚合Aggregate的文章!

/// 
    /// 返回UI消息树
    /// 
    /// 
    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();
      stages.Add(new JsonPipelineStageDefinition("{$match:{AddTime:{$gt:ISODate('" + from + "'),$lt:ISODate('" + to + "')}}}"));
      stages.Add(new JsonPipelineStageDefinition("{$group:{_id: "$RootId", count: {$sum: 1}}}"));
      stages.Add(new JsonPipelineStageDefinition("{$skip:" + page * 5 + "}"));
      stages.Add(new JsonPipelineStageDefinition("{$limit:5}"));
      var pipeline = new PipelineStagePipelineDefinition(stages);
      var result = NoSql.MongodbManager.Collection.Aggregate(pipeline);
      StringBuilder str = new StringBuilder();

      str.Append("
    "); foreach (var item in result.ToList()) { var timer = new List(); var old = NoSql.MongodbManager.Instance.Find(i => i.RootId == item.Values.ToArray()[0].ToString() && i.ParentId == null).FirstOrDefault(); timer.Add(old.AddTime); str.Append("
  1. "); str.AppendFormat("{0}{1}{2}" , old.Url , old.MessageBody , old.AddTime); MsgTree(str, old.ChildId, timer); str.AppendFormat("

    本次请求用时{0}毫秒({1}秒)

    " , (timer.Max() - timer.Min()).TotalMilliseconds , (timer.Max() - timer.Min()).TotalSeconds); str.Append("
  2. "); } str.Append("
"); return str.ToString(); }

注意,目前mongodb for C#这个驱动,在进行Aggregate时,只支持Bsondocument类型,也就是说,你的集合collection也必须返回的是Bsondocument,而实体类型是不可以被认出的,这点要注意.

也正是如此,所以我们的mongo封装时,别忘记公开一个Bsondocument的对象供聚合使用!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/123473.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号