c#操作mongodb的分组的简单例子:

1、首先要下载c#对应的mongodb驱动,官方下载地址:https://github.com/mongodb/mongo-csharp-driver/releases,目前版本是2.3.0

  然后引用相应的命名空间,

  using MongoDB.Bson;
  using MongoDB.Driver;
  using MongoDB.Driver.Core;

2、实例代码:

  /// <summary>
  /// 数据集合,类似关系型数据库中的表
  /// </summary>
  static IMongoCollection<BsonDocument> _collect;

    

  /// <summary>
  /// 数据库初始化
  /// </summary>
  /// <param name="collectionName">数据集合名(就是数据库表名))</param>
  public static void Init(string collectionName)
  {
    string mongoDB_Host = ConfigurationManager.AppSettings["MongoDB_Host"].ToString();
    string mongoDB_DbName = ConfigurationManager.AppSettings["MongoDB_DbName"].ToString();
    MongoDB.Driver.MongoClient mc = new MongoClient(mongoDB_Host);
    IMongoDatabase _db = mc.GetDatabase(mongoDB_DbName);
    _collect = _db.GetCollection<BsonDocument>(collectionName);
  }

  假设有这样一个数据集合:

  { "_id" : 1, "name" : "mike", "sex" : "男", "age" : 20 }
  { "_id" : 2, "name" : "Marry", "sex" : "女", "age" : 25 }
  { "_id" : 3, "name" : "Tom", "sex" : "女", "age" : 35 }
  { "_id" : 4, "name" : "Joe", "sex" : "女", "age" : 35 }
  { "_id" : 5, "name" : "Joe", "sex" : "女", "age" : 45 }
  { "_id" : 6, "name" : "John", "sex" : "男", "age" : 45 }

  a、统计男女的数量

  Sql: select $sex,count(1) from student group by $sex

  BsonDocument db = new BsonDocument { { "_id", "$sex" }, { "count", new BsonDocument("$sum", 1) } };
  var aggregate = _collect.Aggregate().Group(db);
  List<BsonDocument> list = aggregate.ToList<BsonDocument>();

  b、统计男女的总年龄

  SQL: select sex,SUM(aget) totalAge  from student group by sex

  BsonDocument db = new BsonDocument { { "_id", "$sex" }, { "totalAge", new BsonDocument("$sum", "$age") } };
  var aggregate = _collect.Aggregate().Group(db);
  List<BsonDocument> list = aggregate.ToList<BsonDocument>();

  c、统计男女的平均年龄,最大和最小年龄学生的信息

  SQL:select sex,avg(age) avgAge  from student group by sex

  SQL:select sex,max(age) maxAge  from student group by sex

  SQL:select sex,min(age) minAge  from student group by sex

  

  //BsonDocument db = new BsonDocument { { "_id", "$sex" }, { "avgAge", new BsonDocument("$avg", "$age") } };
  //BsonDocument db = new BsonDocument { { "_id", "$sex" }, { "maxAge", new BsonDocument("$max", "$age") } };
  BsonDocument db = new BsonDocument { { "_id", "$sex" }, { "minAge", new BsonDocument("$min", "$age") } };
  var aggregate = _collect.Aggregate().Group(db);
  List<BsonDocument> list = aggregate.ToList<BsonDocument>();

  d、统计年龄大于25男女的平均年龄的信息

  SQL:select sex,avg(age) avgAge  from student where age >25 group by sex

  BsonDocument dbMatch = new BsonDocument {  { "age",  new BsonDocument("$gt", 25)} };

  BsonDocument dbGroup = new BsonDocument { { "_id", "$sex" }, { "avgAge", new BsonDocument("$avg", "$age") } };

  var aggregate = _collect.Aggregate().Match(dbMatch).Group(dbGroup);
  List<BsonDocument> list = aggregate.ToList<BsonDocument>();

  

  e、$push,$addToSet

  //把男女学生的年龄放在一个集合里面,并允许年龄一样的同时存在

  //BsonDocument db = new BsonDocument { { "_id", "$sex" }, { "AllAge", new BsonDocument("$push", "$age") } };
  //var aggregate = _collect.Aggregate().Group(db);
  //List<BsonDocument> list = aggregate.ToList<BsonDocument>();

  //把男女学生的年龄放在一个集合里面,并不允许年龄一样的数据

  //BsonDocument db = new BsonDocument { { "_id", "$sex" }, { "AllAge", new BsonDocument("$addToSet, "$age") } };
  //var aggregate = _collect.Aggregate().Group(db);
  //List<BsonDocument> list = aggregate.ToList<BsonDocument>();

  

C# 操作mongodb 分组的更多相关文章

  1. nodejs操作mongodb数据库封装DB类

    这个DB类也算是我经历了3个实际项目应用的,现分享出来,有需要的请借鉴批评. 上面的注释都挺详细的,我使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关 ...

  2. NodeJs操作MongoDB之多表查询($lookup)与常见问题

    NodeJs操作MongoDB之多表查询($lookup)与常见问题 一,方法介绍 aggregate()方法来对数据进行聚合操作.aggregate()方法的语法如下 1 aggregate(ope ...

  3. PHP操作MongoDB(增删改查)

    MongoDB的PHP驱动提供了一些核心类来操作MongoDB,总的来说MongoDB命令行中有的功能,它都可以实现,而且参数的格式基本相似.PHP7以前的版本和PHP7之后的版本对MongoDB的操 ...

  4. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  5. 【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  6. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  7. PHP操作Mongodb之增删改查篇

    之前,我讲解过PHP中mongodb扩展的安装,及启动,链接操作[忘记了?去看看吧!PHP操作Mongodb之一].本文主要就是讲在PHP中Mongodb的增加,查询,修改及删除数据的操作. 1.增加 ...

  8. PHP操作Mongodb之高级查询篇

    本文主要讲解PHP中Mongodb的除了增删改查的一些其他操作. 在PHP操作Mongodb之增删改查篇中我们介绍了PHP中Mongodb的增加.删除.修改及查询数据的操作.本文主要是将查询时用到的高 ...

  9. php操作mongodb中的ISODate格式日期

    mongodb 中数据记录的日期格式为"dateCreated" : ISODate("2011-12-20T07:22:50.836Z")经过翻阅php官网中 ...

随机推荐

  1. Swift 结构体和类

    //*---------------------结构体-------------*/ //swift结构体也具有封装的概念 //swift结构体比OC C语言里面的结构体更加进了一步,里面可以有方法, ...

  2. 大陆居民身份证验证方法(java)

    1.设置接口 @Constraint(validatedBy = ChineseIdNumberValidator.class) @Target({ElementType.METHOD, Elemen ...

  3. JS精确到小数点两位

    1.会四色五入 var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.452.正则Number(15.7784514000.toString() ...

  4. git 撤销修改以及删除文件

    撤销修改 1.如果当你修改了代码,然后又发现修改错误以后,想撤销前面的操作的时候该怎么办呢? 既然错误发现得很及时,就可以很容易地纠正它.你可以删掉最后一行,手动把文件恢复到上一个版本的状态.如果用 ...

  5. Linux与windows文件乱码问题

    Linux与windows文件乱码问题 */--> Linux与windows文件乱码问题 Table of Contents 1. 简介 2. iconv详解 2.1. iconv –help ...

  6. 滑动条slider

    #include"ui/CocosGUI.h" using namespace ui; Text* displayValudLabel = Text::create("轻 ...

  7. .NET技能分析

    知乎话题:如何面试.NET/ASP.NET工程师? No.1初级:1.对 C#(推荐) 或 VB 语言直至与 .NET 4 (目前为止)相匹配的版本,绝大多数特性熟悉并使用过2.通晓 HTTP 协议的 ...

  8. PHP基础1

    PHP:相当于客户端和MySQL之间的一堵墙 Apache(阿帕奇):是web服务器软件 localhost:相当于一个域名   一.wampserver http.conf:用来配置Apache p ...

  9. jQuery 黑白插件

    1 add jQuery and plug in to the page <script src="js/jquery.min.js"></script> ...

  10. 学习笔记1_Day09_Servlet

    生命周期方法: l  void init(ServletConfig):出生之后(1次): l  void service(ServletRequest request, ServletRespons ...