MongoDB升级
因业务需要所以需要对mongoDB客户端jar包升级,在此记录一些过程
1、jar包替换,引入依赖
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.6.1</version>
</dependency>
MongoCredential credential = MongoCredential.createScramSha256Credential("<username>", "<authenticationDb>", "<password>");
MongoCredential credential = MongoCredential.createScramSha1Credential("<username>", "<authenticationDb>", "<password>");
MongoClientSettings settings = MongoClientSettings.builder()
.applyToClusterSettings(new Block<ClusterSettings.Builder>() {
@Override
public void apply(ClusterSettings.Builder builder) {
builder.hosts(seedList);
}
})
.applyToConnectionPoolSettings(new Block<ConnectionPoolSettings.Builder>() {
@Override
public void apply(ConnectionPoolSettings.Builder builder) {
builder.maxSize(connectionPoolSize);
}
})
.credential(credential)
.build();
MongoClient mongoClient = MongoClients.create(settings);
MongoDatabase database = mongoClient.getDatabase("数据库名");
MongoCollection collection = database.getCollection("表名")
CodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build();
CodecRegistry pojoCodecRegistry = fromRegistries(getDefaultCodecRegistry(), fromProviders(pojoCodecProvider));
配置MongoClient,MongoDatabase或MongoCollection 实例以使用CodecRegistry。只需要配置其中之一
MongoDatabase database = mongoClient.getDatabase("库名").withCodecRegistry(pojoCodecRegistry);
Document query = new Document("key","value");
collection.find(quert).first;//单个
ArrayList beans = new ArrayList();
FindIterable<Document> findIterable = collection.find(query);//多个,由游标遍历
if (limit > 0) {
findIterable = findIterable.limit(limit);
}
if (skip > 0L) {
findIterable = findIterable.skip((int)skip);
}
if (orderBy != null) {
findIterable = findIterable.sort(orderBy);
}
MongoCursor<Document> cursor = findIterable.iterator();
while(cursor.hasNext()) {
beans.add(this.toBean(cursor.next()));
}
//聚合操作单字段
Iterable<Document> resultIt=dbCollection.aggregate(Arrays.asList(
Aggregates.match(query),
Aggregates.group("$taskId", Accumulators.sum("sumMsgCount", "$msgCount"))
)
);
//聚合操作单字段
Document groupId = new Document();
groupId.put("taskId", "$taskId");
groupId.put("platform", "$policy.platform");
groupId.put("appId", "$appId");
Iterable<Document> resultIt = dbCollection.aggregate(Arrays.asList(
Aggregates.match(matchId),
Aggregates.group(groupId, Accumulators.sum("msgCount", 1))));
this.dbCollection.deleteMany(query);
this.dbCollection.updateMany(query,update);
MongoDB升级的更多相关文章
- MongoDB升级导致启动失败
起因 最近项目使用MongoDB,但是作为一个技术菜鸟,NoSQL数据库我还真不会用,于是我就在自己的阿里云服务器上安装了一个MongoDB4.0.9. 现象 但是当我使用yum -y update升 ...
- MongoDB升级教程
1.排序 sort()方法:其中 1 为升序排列,而-1是用于降序排列. db.col.find({},{"title":1,_id:0}).sort({"likes&q ...
- mongodb安装&简单使用
转自Mac下使用brew安装mongodb,按着步骤已成功安装. brew常用命令 1.更新brew本身 brew update 2.使用brew安装软件 1 brew install soft_na ...
- MongoDB常用命令
本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程. MongoDB的使用之前也分享过一篇, ...
- MongoDB使用小结:一些常用操作分享
本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程. MongoDB的使用之前也分享过一篇, ...
- [教程]MongoDB 从入门到进阶 (User系统)
自从MongoDB升级到2.4之后,User系统,或者说是权限系统有了翻天覆地的变化. 在MongoDB2.4之前的User系统,除了用户名和密码之外,只有一个ReadOnly属性. 如果一个用户在a ...
- MongoDB最佳实践中文手册
背景:查阅了一下MongoDB的相关文档,发现中文文档还是比较少的,工作中需要用到MongoDB,而这本<MongoDB最佳实践>是很好的选择,所以就把这本手册翻译了一下,其中生涩的专业用 ...
- MongoDB索引管理
一.创建索引 创建索引使用db.collectionName.ensureIndex(...)方法进行创建: 语法: >db.COLLECTION_NAME.ensureIndex({KEY:1 ...
- MongoDB 不在开源了,使用 Homebrew 安装只能玩社区版了
使用了大半年的 mongodb ,最近在公司的新项目中应用,在 mac 上安装 mongodb 时发现始终安装不了,一直在报下面这样的错误: brew install mongodb 升级 brew ...
- 快速了解MongoDB
简介 MongoDB是一款为广泛的现代应用程序设计的高性能.可扩展.分布式数据库系统.MongoDB可用于不同规模大小的组织,为那些对系统低延迟.高吞吐量以及可持续性有很高要求的应用提供稳定关键的服务 ...
随机推荐
- 深入理解C++虚函数底层机制和RTTI运行时类型识别
当调用一个虚函数时,被执行的代码必须与调用函数对象的动态类型相一致:指向对象的指针或引用的类型是不重要的,编译器是如何高效地提供这种行为呢?大多数编译器是使用virtual table和virtual ...
- [Untiy]贪吃蛇大作战(一)——开始界面
前言: 刚学unity没多久吧(大概1个月多点),这是我自己做的除官网之外的第一个游戏demo,中间存在很多不足的地方,但是还是希望可以给需要的人提供一些思路和帮助,有问题的小伙伴可以找我一起探讨一起 ...
- dfs 返回值用bool相对void会快一点
力扣 剑指 Offer 12. 矩阵中的路径 超时代码 dfs返回值是void,用类内的全局变量flag表示找到或没找到. class Solution { public: bool flag; in ...
- 刷题笔记——1112:C语言考试练习题_一元二次方程
题目 1112:C语言考试练习题_一元二次方程 代码 import math while True: try: a,b,c=map(float,input().strip().split()) del ...
- 小项目中vuex使用频率不太多我们完全可以用provide inject 来代替可以让项目小不少
在一般小型项目中vuex实在是太浪费了所以我们可以用到 vue中的provide inject 代替 1.在vue3中我们先另起一个 文件创建一个全局的状态和方法的地方(如果你的全局状态特别的多记得要 ...
- 【Linux技术专题系列】「必备基础知识」一起探索和实践sftp配置之密钥方式登录
FTP服务-vsftp协议实现 我们常用的是FTP协议,主要是通过VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来, ...
- linux 高效压缩工具之xz的压缩解压使用
xz是什么 高压缩率的工具,它使用 LZMA2 压缩算法,生成的压缩文件比传统使用的 gzip.bzip2 生成的压缩文件更小, 不过xz也有一个坏处就是压缩时间比较长,比7z压缩时间还长一些.不过压 ...
- java入门与进阶 P-3.2+P-3.3+P3.4
数数字 例如:Scanner sc = new Scanner(System.in);int number = sc.nextInt();int count= 0;while(number>0) ...
- Java 进阶P-8.9+P-8.10
文件流 File Input Stream File Output Stream 对文件作读写操作 实际工程中已经较少使用 更常用的是以在内存数据或通信数据上建立的流,如数据库的二进制数据读写或网络端 ...
- day04-视图和视图解析器
视图和视图解析器 1.基本介绍 在SpringMVC中的目标方法,最终返回的都是一个视图(有各种视图) 注意,这里的视图是一个类对象,不是一个页面!! 返回的视图都会由一个视图解析器来处理(视图解析器 ...