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. BigInteger

    首先上模板(不断更新中...)(根据刘汝佳AOAPCII修改) #include <iostream> #include <sstream> #include <cstd ...

  2. php的传值和传址

    有些情况下,可能希望在函数体内对参数的修改在函数体外也能反映; 使用引用传递参数要在参数前加上&符号; 例子: <?php $a=5; function show(&$a){   ...

  3. linux命令 common 文件比较

    比较已经排序的文件 comm [options] file1 file2 comm将逐行比较已经排序的两个文件.显示结果包括3列: 第1列为只在file1中找到的行;第2列为只在file2中找到的行; ...

  4. and or判别

    and 和 or涉及到短路运算,python把0,'',none看做false,其余是true, 对于a and b,若a是true则,返回b,若a是false则返回a(因为a是true还需要判断b, ...

  5. Jquery中Ajax异步请求中的async参数的作用

    之前不知道这个参数的作用,上网找了前辈的博客,在此收录到自己的博客,希望能帮到更多的朋友: test.html <a href="javascript:void(0)" on ...

  6. Oracle——事务(Transaction)

    事务: 事务是指作为单个逻辑工作单元执行的一组相关操作. 这些操作要求全部完成或者全部不完成. 使用事务的原因:保证数据的安全有效. 事务的四个特点:(ACID) 1.原子性(Atomic):事务中所 ...

  7. cocos2d-x实战 C++卷 学习笔记--第4章 win32平台下中文乱码问题

    前言: 将GBK编码的字符串转为UTF-8编码.(通俗点说就是解决中文乱码问题) 简要介绍: 在Win32平台下通过 log 输出中文字符时,会出现中文乱码问题.同样的代码在 ios 和 Androi ...

  8. Java多线程概述

    /*多线程1.首先说进程,进程---就是正在进行的程序    每一个进程都有一个执行程序.该顺序是一个执行路径,或者叫一个控制单元 2.线程:就是进程中的一个独立的进程单元        线程在控制着 ...

  9. [Effective Java读书笔记] 第二章 创建和销毁对象(1~7)

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3537576.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  10. Java异常(1)

    一.要达到的效果 如果出现错误而是某些操作没有完成,程序应该: (1)返回到一种安全状态,并能够让用户执行一些其他的命令. (2)允许用户保存所有操作的结果,并以适当的方式终止程序.   异常处理的任 ...