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可用于不同规模大小的组织,为那些对系统低延迟.高吞吐量以及可持续性有很高要求的应用提供稳定关键的服务 ...
随机推荐
- (11)go-micro微服务雪花算法
目录 一 雪花算法介绍 二 雪花算法优缺点 三 雪花算法实现 四 最后 一 雪花算法介绍 雪花算法是推特开源的分布式ID生成算法,用于在不同的机器上生成唯一的ID的算法. 该算法生成一个64bit的数 ...
- C 语言初学者必备开发工具——Dev-Cpp [ 图文安装教程 ]
前言 C 语言是一门功能强大的专业化编程语言,深受专业程序员和业余编程爱好者的喜爱,同时 C 语言也是当今最流行的嵌入式开发语言.大多数嵌入式项目的开发都是用 C 语言来编写的. 既然 C 语言这么厉 ...
- 局部内部类定义-局部内部类的final问题
局部内部类定义 定义格式: 修饰符 class 外部类名称 { 修饰符 返回值类型 外部类方法名(参数列表){ class 局部内部类名称{// ... } } } 小杰一下类的权限修饰符: publ ...
- Windows 映射网络驱动器及删除-此网格连接不存在
将共享目录,映射到本地磁盘,可以方便快速访问 添加 点击[此电脑]菜单栏中,选择[计算机]->[映射网格驱动器]-> 文件夹中输入 共享目录地址,如下图 删除 右击,网格映射盘,右击[断开 ...
- 重启系统(等级考试4级 2021-03 T4)
这道题如果没有一次重启系统的机会就相当于两个最长不下降子序列加在一起. 所以只需要改亿点点即可 把dp分为 dpleft 和 dpright 最长不下降子序列程序:最长上升子序列 II 时间复杂度(n ...
- Vue13 样式动态绑定
1 class样式的动态绑定 1.1 说明 通过命令v-bind:class设置一个对象,动态切换class.可以简写为:class. class=""可以和:class=&quo ...
- MySQL 版本号排序
1.业务背景 版本检查接口返回版本号排序时出现如下图所示问题 普通的查询按数字值逐级比较,导致版本号高的排在了后面,这样版本检查根据版本号排序倒排取出来的不是最新的版本号,本文就此问题查询了诸多方法, ...
- Rpc-实现Client对ZooKeeper的服务监听
1.前言 在上一篇文章中,完成了ZooKeeper注册中心.但是在上一篇中,ZooKeeper添加了一个简单的本地缓存,存在一些问题: 当本地缓存OK,ZooKeeper对应服务有新的实例时,本地缓存 ...
- LG P4146 序列终结者
\(\text{Problem}\) 支持区间加区间翻转区间最大值 \(\text{Solution}\) \(\text{FHQ-Treap}\) 两个标记加与翻转 然后维护区间最大值 \(\tex ...
- 国内“谁”能实现chatgpt,短期穷出的类ChatGPT简评(算法侧角度为主),以及对MOSS、ChatYuan给出简评,一文带你深入了解宏观技术路线。
1.ChatGPT简介[核心技术.技术局限] ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI 研发的聊天机器人程序 ,于202 ...