C# 操作mongodb 分组
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 分组的更多相关文章
- nodejs操作mongodb数据库封装DB类
这个DB类也算是我经历了3个实际项目应用的,现分享出来,有需要的请借鉴批评. 上面的注释都挺详细的,我使用到了nodejs的插件mongoose,用mongoose操作mongodb其实蛮方便的. 关 ...
- NodeJs操作MongoDB之多表查询($lookup)与常见问题
NodeJs操作MongoDB之多表查询($lookup)与常见问题 一,方法介绍 aggregate()方法来对数据进行聚合操作.aggregate()方法的语法如下 1 aggregate(ope ...
- PHP操作MongoDB(增删改查)
MongoDB的PHP驱动提供了一些核心类来操作MongoDB,总的来说MongoDB命令行中有的功能,它都可以实现,而且参数的格式基本相似.PHP7以前的版本和PHP7之后的版本对MongoDB的操 ...
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- 【MongoDB for Java】Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- PHP操作Mongodb之增删改查篇
之前,我讲解过PHP中mongodb扩展的安装,及启动,链接操作[忘记了?去看看吧!PHP操作Mongodb之一].本文主要就是讲在PHP中Mongodb的增加,查询,修改及删除数据的操作. 1.增加 ...
- PHP操作Mongodb之高级查询篇
本文主要讲解PHP中Mongodb的除了增删改查的一些其他操作. 在PHP操作Mongodb之增删改查篇中我们介绍了PHP中Mongodb的增加.删除.修改及查询数据的操作.本文主要是将查询时用到的高 ...
- php操作mongodb中的ISODate格式日期
mongodb 中数据记录的日期格式为"dateCreated" : ISODate("2011-12-20T07:22:50.836Z")经过翻阅php官网中 ...
随机推荐
- jemter接口测试之---接口测试的一些约定
一.接口规范 1.前端请求接口 请求数据格式:appType =1&args ={json}&session =xxx×tamp =now&sign =x ...
- http请求之referer头与防盗链
在网页中的占用大流量的信息可以写成这个信息在网络上的url位置,这样就会减少本网站的流量,但是其他网站也 不会随意让你使用人家的资源,因为这样的情对人家的网站没有好处,会增加人家网站的流量,所以要防止 ...
- JAXB - Validate Document before It is Unmarshalled
Validation A considerable part of the XML Schema language deals with facets, enabling the programmer ...
- Java内存分配全面浅析(转)
原文引自CSDN: 本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java.这类文章网上有很多,但大多比较零碎.本文从认知过程角度出发,将带给读者一个 ...
- php正则贪婪匹配与非贪婪匹配一些例子
http://www.111cn.net/phper/210/55600.htm 贪婪模式匹配的原则是: 在可匹配也可不匹配的情况下, 优先匹配,直到不能匹配成功的情况下,记录备选状态,并把匹配控制交 ...
- 修改arcgis server默认js和css连接地址
当使用ArcGIS Server 10.1发布了一个地图服务之后,在ArcGIS Server 10.1的机器上使用浏览器进入http://localhost:6080/arcgis/rest/ser ...
- java多线程总结五:线程池的原理及实现
1.线程池简介: 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力. 假设一个服务器完成一项任务所需时间为:T1 创 ...
- WCF编程系列(三)地址与绑定
WCF编程系列(三)地址与绑定 地址 地址指定了接收消息的位置,WCF中地址以统一资源标识符(URI)的形式指定.URI由通讯协议和位置路径两部分组成,如示例一中的: http://loc ...
- oc 通过webView调用js方法
- (void)viewDidLoad { [super viewDidLoad]; //加载本地web页面 web = [[UIWebView alloc]init]; web.background ...
- Newtonsoft.Json随手记
private static Newtonsoft.Json.JsonSerializerSettings CreateSettings(string dateFormat) { Newtonsoft ...