Mongodb——Aggregate

2023-12-07 00:18
文章标签 mongodb aggregate

本文主要是介绍Mongodb——Aggregate,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

聚合概念:

聚合是处理数据记录并且返回计算结果的操作。mongodb提供了一组强大针对数据集合进行检查和计算的聚合操作。在mongod实例中运行数据聚合可以简化应用程序代码,约束资源需求;和查询一样,在mongodb中聚合操作把文档的集合作为输入参数,以一个或者多个文档的形式返回结果。

在mongodb中使用聚合框架可以对集合中的文档进行变换和组合。基本上用多个构建创建一个管道(pipeline),用于对一连串的文档进行处理。这些构建包含筛选(filtering),投射(projecting),分组(grouping),排序(sorting),限制(limiting)和跳过(skipping).


代码示例:

c#调用 MongoDB.Driver 中接口

下面是方法的简单封装

 public IMongoCollection<BsonDocument> GetCollection(){var server = new MongoClient(_connectStr);return server.GetDatabase(_database).GetCollection<BsonDocument>(_collection);}
  public IAsyncCursor<BsonDocument> GetAggregate(PipelineDefinition<BsonDocument, BsonDocument> pipeline){return  GetCollection().Aggregate(pipeline);}

调用封装好的聚合方法

 private void btnAggregate_Click(object sender, EventArgs e){const string pipelineJson1 = " {$skip : 5}";const string pipelineJson2 = " {$project : {_id : 0 ,author : 1}}";const string pipelineJson3 = " {$group: {_id: \"$author\", count: {$sum: 1}}}";const string pipelineJson4 = " {$group: {_id: \"$tags.python\", count: {$sum: 1}}}";const string pipelineJson5 = " {$match: {tags.pymongo:\"888\"}";  //得到匹配条件满足的结果const string pipelineJson6 = " {$sort: {count:-1}";  //降序const string pipelineJson7 = " {$limit: 5}";         //返回当前结果的前5个文档IList<IPipelineStageDefinition> stages = new List<IPipelineStageDefinition>();PipelineStageDefinition<BsonDocument, BsonDocument> stage1 =new JsonPipelineStageDefinition<BsonDocument, BsonDocument>(pipelineJson1);PipelineStageDefinition<BsonDocument, BsonDocument> stage2 =new JsonPipelineStageDefinition<BsonDocument, BsonDocument>(pipelineJson2);PipelineStageDefinition<BsonDocument, BsonDocument> stage3 =new JsonPipelineStageDefinition<BsonDocument, BsonDocument>(pipelineJson3);PipelineStageDefinition<BsonDocument, BsonDocument> stage4 =new JsonPipelineStageDefinition<BsonDocument, BsonDocument>(pipelineJson4);//stages.Add(stage1);//stages.Add(stage2);//stages.Add(stage3);stages.Add(stage4);PipelineDefinition<BsonDocument, BsonDocument> pipeline = new PipelineStagePipelineDefinition<BsonDocument, BsonDocument>(stages);var result = _access.GetAggregate(pipeline);if (result != null){this.textBox1.Text = "";foreach (var r in result.ToList()){this.textBox1.Text += string.Format("{0} \r\n", r);}}}


调用结果示图:




可以看到聚合的结果出来了,但是貌似只能返回一组聚合结果,而不能同时一次返回多个聚合结果,有待继续研究。

这篇关于Mongodb——Aggregate的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/463862

相关文章

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

生产mongodb 分片与集群 方案

链接:http://my.oschina.net/pwd/blog/411439#navbar-header 注:主要是有一键安装的脚本可以借鉴

mongodb基本命令和Java操作API示例

1.Mongo3.2 java API示例:http://www.cnblogs.com/zhangchaoyang/articles/5146508.html 2.MongoDB基本命:http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html 3.java MongoDB查询(一)简单查询: http://www.cnblogs

使用jetty和mongodb做个简易文件系统

使用jetty和mongodb做个简易文件系统 - ciaos 时间 2014-03-09 21:21:00   博客园-所有随笔区 原文   http://www.cnblogs.com/ciaos/p/3590662.html 主题  MongoDB  Jetty  文件系统 依赖库: 1,jetty(提供http方式接口) 2,mongodb的java驱动(访问mo

mongodb简单入门

一篇较好的mongodb常用操作命令:http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html mongodb的java操作:http://www.cnblogs.com/cyhe/p/5451421.html

mongodb自启动脚本.md

可粘贴文本(不全): #!/bin/sh##chkconfig: 2345 80 90#description:mongodb#processname:mongodbif test -f /sys/kernel/mm/transparent_hugepage/enabled; thenecho never > /sys/kernel/mm/transparent_hugepage/e

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

MongoDB学习—(5)修改器$inc,$unset,$push,$pushAll,$allToSet,$pop,$pull,$pullAll

通过db.help()可以查询到关于数据库的操作,一查询发现有很多方法 其中有一个方法为db.getCollection(cname),即通过这一个函数,传入数据库中的一个集合的名称来获取到该集合的一个对象,我们可以编写函数   function insertTenRecord(obj){ var i=0; while(i++<10){ obj.insert({id:i+1,a

MongoDB学习—(4)文档的插入,删除与更新

一,文档的插入 插入命令有两个一个为insert,另一个为save,两者的区别为 db.[documentName].insert({..})插入的数据不允许重复,即_id不可相同 db.[docuemntName].save({..})插入的数据允许重复,如果整条数据内容相同,则不发生替换,如果数据有做不同,则将原数据替换 二,删除文档数据 db.[docuementName].r

MongoDB学习—(3)shell的基本操作

一,删除数据库中的集合文档 命令为 db.[documentName].drop() 二,删除数据库 命令为 db.dropDatabase() 执行该命令时,应该先进入想要删除的数据库中,如 三,shell中的help 我们可以运用shell中的help来查询相关的操作,查询数据库相关的就用db.help(),查询集合相关的就用db.[documentName].help