
mongodb dirver for java【聚合】
发布日期:2021-05-07 04:26:39
浏览次数:23
分类:精选文章
本文共 2835 字,大约阅读时间需要 9 分钟。
环境
MongoDB:3.+
mongodb dirver for Java: 3.+ @author:喻涛概要
本篇是翻译官网:
讲解的是用java代码对MongoDB进行聚合操作。
Aggregation Framework
聚合管道是数据聚合的框架,其实仿造数据处理管道的概念。
先决条件
在test
数据库中要有一个restaurants
集合。
你可能需要import
的声明:
import com.mongodb.Block; import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Aggregates; import com.mongodb.client.model.Accumulators; import com.mongodb.client.model.Projections; import com.mongodb.client.model.Filters;
下面的这段代码是在教程示例中将会把查询到的结果打印出来。
BlockprintBlock = new Block () { @Override public void apply(final Document document) { System.out.println(document.toJson()); } };
连接数据库
这里我贴出我自己的代码:
//连接数据库 start MongoCredential credential = //根据自己的情况修改 MongoCredential.createCredential("gg_openapi", "gg_openapi", "gg..openapi#!".toCharArray()); //根据自己的情况修改 serverAddress = new ServerAddress("106.75.51.20", 35520); Listaddrs = new ArrayList (); addrs.add(serverAddress); List credentials = new ArrayList (); credentials.add(credential); @SuppressWarnings("resource") MongoClient mongoClient = new MongoClient(addrs, credentials); MongoDatabase database = mongoClient.getDatabase("gg_openapi"); System.out.println("Connect to database successfully"); //连接数据库 end
执行聚合
要执行聚合,你需要把聚合各个阶段的列表传递给MongoCollection.aggregate()
方法。
Aggregates
助手类,该类包含了聚合阶段的构建器。 说明:这个翻译的聚合阶段,其实就是聚合的各个管道,大概有哪些呢?我列举一些:
$project$match$group$sort$skip$limit$count
下面代码中,聚合的管道有:
①使用来进行过滤文档,下面的例子中过滤数组字段categories
包含Bakery
。示例中使用来构建$match
管道。 ②使用,通过按照字段stars
来进行分组,同时,计算每组的数量。下面的示例使用的是来构建$group
管道,用来构建,为了在管道中使用累加器表达式,java驱动程序提供了助手类。 collection.aggregate( Arrays.asList( Aggregates.match(Filters.eq("categories", "Bakery")), Aggregates.group("$stars", Accumulators.sum("count", 1)) )).forEach(printBlock);
使用聚合表达式
对于$group 累加器表达式
,java驱动程序提供了Accumulators
助手类。对于其他聚合表达式,可以利用Document
对象手动来构建。
下面示例中,聚合管道使用$project
来只返回name
字段和计算字段firstCategory
,firstCategory
这个字段的值就是每个categories
数组的第一个元素的值。这个例子使用Aggregates.project
和各种Projections
方法来构建$project
阶段。
collection.aggregate( Arrays.asList( Aggregates.project( Projections.fields( Projections.excludeId(), Projections.include("name"), Projections.computed( "firstCategory", new Document("$arrayElemAt", Arrays.asList("$categories", 0)) ) ) ) )).forEach(printBlock);
总结
本篇教程重点介绍3.+
驱动程序中提供的助手类
。
MongoDB
原生知识的掌握。 发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月23日 02时40分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
京喜小程序体验评分优化实践
2021-05-13
C#中文转换成拼音
2021-05-13
C++错误笔记
2021-05-13
【无线通信模块】GPRS DTU不稳定和容易掉线原因
2021-05-13
SpringBoot使用RedisTemplate简单操作Redis的五种数据类型
2021-05-13
qt中转到槽后如何取消信号与槽关联
2021-05-13
qt问题记录-spin box与double spin box
2021-05-13
移动端事件
2021-05-13
spring-day01
2021-05-13
spring的值注入与组件扫描
2021-05-13
C#跨窗体程序调用方法的具体操作
2021-05-13
抖音发布黄金时间段,抖音上热门最佳时间
2021-05-13
我的图床~
2021-05-13
Thymeleaf sec:authorize 标签不生效
2021-05-14
Iterable与Iterator
2021-05-14
关于WebView当前地址问题的疑惑
2021-05-14
Python机器学习(九十二)Pandas 统计
2021-05-14
SecSolar:为代码“捉虫”,让你能更专心写代码
2021-05-14
链上钱包的博彩雷区
2021-05-14