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官网中 ...
随机推荐
- IOS中如何显示带有html标签的富文本
NSString *strHTML = @"<p>你好</p><p> 这是一个例子,请显示</p><p>外加一个ta ...
- windows下搭建属于自己的web服务器
这次需要记录一下我搭建web服务器的过程. 第一步,确定自己要使用的平台:这次我用的是windows2008 server版本 第二步,计划是想要纯手工的安装apache.php等.但是我们可以下载一 ...
- Java阻塞中断和LockSupport
在介绍之前,先抛几个问题. Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常? ...
- 自己写http获取网络资源和解析json数据
虽然github上有很多开源的,方便的jar报,用起来也很方便,但我们也需要了解其中的原理,如何自己不用第三方jar包来获取网络资源 主要代码如下: 因为联网是耗时的操作,所以需要另开一个线程来执行 ...
- JS 乱记
JS 中不存在块级作用域,也就是说在全局作用域下 if ,for 语句中用 var 声明的变量是全局变量. JS 中浮点数运算的值为近似值,比如:0.1 + 0.2 不等于 0.3 ,所以避免使用浮点 ...
- html元素拖拽
html <div> <div class="money-input"> 定投金额 : <div class="input-rela&quo ...
- 【JQuery基础教程(第三版)图灵】笔记
第1章 jQuery入门 1.jQuery官方网站:http://jquery.com 2.开发工具:Firebug 第2章 选择元素 1.属性选择符:属性选择符通过HTML元素的 ...
- 过滤textarea
Function UBBFilter(ByVal reString) Dim Str:Str=reString If Not IsNull(Str) Then Str = Replace(Str, & ...
- SQL Server调优系列进阶篇 - 如何维护数据库索引
前言 上一篇我们研究了如何利用索引在数据库里面调优,简要的介绍了索引的原理,更重要的分析了如何选择索引以及索引的利弊项,有兴趣的可以点击查看. 本篇延续上一篇的内容,继续分析索引这块,侧重索引项的日常 ...
- (转)传统MySQL+ Memcached架构遇到的问题
实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: ...