Mongodb——Aggregate
来源:互联网 发布:mac怎么远程win8 编辑:程序博客网 时间:2024/05/25 19:57
聚合概念:
聚合是处理数据记录并且返回计算结果的操作。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); } } }
调用结果示图:
可以看到聚合的结果出来了,但是貌似只能返回一组聚合结果,而不能同时一次返回多个聚合结果,有待继续研究。
0 0
- Mongodb——Aggregate
- Mongodb Aggregate,MapReduce Sample
- mongodb aggregate 级联查询
- Mongodb aggregate timezone 问题
- mongodb aggregate 聚合操作
- mongodb的aggregate 用法
- java mongodb aggregate用法
- MongoDB aggregate聚合
- MongoDB aggregate 聚合管道
- mongodb 聚合aggregate 乘法
- MongoDB中的聚合 aggregate
- java mongodb aggregate用法
- golang mongodb Aggregate
- MongoDB aggregate() 聚合
- java mongodb aggregate用法
- MongoDB | 聚合 aggregate
- MongoDB的聚合(aggregate)
- MongoDB的聚合函数 Aggregate
- 进程间通信
- ngx.exit,ngx.eof,ngx.timer.at
- bootstrap
- android 飘心动画(直播点赞)效果
- java 算法基础
- Mongodb——Aggregate
- docker下计划任务crontab的使用方法
- 【English】August summary ——Come on!September
- 小易最少可能多少秒就落入超超的陷阱
- xrange -->range
- jq-ui的Sortable插件 两列布局 左右拖拽
- Using TemplateRef to create a tooltip/popover directive in Angular 2
- source路径等问题 idea中配置使用mybatis出现问题BuilderException (XML文件路径问题)
- JAVA面试问题及答案(上)