2021-10-28 java Mongo

本文详细介绍了如何使用MongoDB Java API进行同步和异步操作,包括MongoDB客户端的初始化与关闭、数据库和集合的创建与查询、文档的插入、更新、删除和替换操作,以及批量写入和Reactive Streams操作。还给出了相关的Maven依赖和代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考链接:MongoDB Java API操作很全的整理 - 21cm - 博客园

MongoDB的操作分为同步操作和异步操作
一、同步操作API

使用API时,先引入maven依赖

<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.11.1</version>
</dependency>

 1、关于MongoDB Client的初始化和关闭。

从官方介绍来看,一般建议Client只需要一个建立一个长连接实例,然后使用时,都使用这个实例就可以,也就是可以用java的单例模式来创建连接实例。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

//mongoClient连接

protected static MongoClient mongoClient;

 public synchronized static MongodbClient getInstance(String mongodbUrl) {

        if (null == mongoClient) {

            mongoClient = MongoClients.create(mongodbUrl);

            if(null != mongoClient){

                log.info("mongoClient init success!");

            }

            else{

                log.info("mongoClient init failed!");

            }

        }

        return mongodbClient;

    } 

直接通过mongodb的host和port来创建client: 

1

MongoClient mongoClient = MongoClients.create("mongodb://host1:27017");

client连接到一个 Replica Set:

1

2

3

MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017,host3:27017");

 MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet"); 

或者通过MongoClientSettings.builder() 来辅助生成连接字符串来创建client:

1

MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList( new ServerAddress("host1"27017), new ServerAddress("host2"27017), new ServerAddress("host3"27017)))) .build());

  连接关闭:

1

2

3

4

5

6

public void close() {

    if(null!=mongoClient){

        mongoClient.close();

        mongoClient=null;

    }

}

  2、关于MongoDB 的基本操作

//创建Collection
public void createCollection(String dataBaseName,String collectionName){ getDatabase(dataBaseName).createCollection(collectionName); }
//查询dataBaseName

public MongoDatabase getDatabase(String dataBaseName){ return mongoClient.getDatabase(dataBaseName); }
//查询Collection

public List<String> listCollectionNames(String dataBaseName){
List<String> stringList = new ArrayList<String>();
mongoClient.getDatabase(dataBaseName).listCollectionNames().forEach((Consumer<? super String>) t->{ stringList.add(t); });
return stringList; }

public MongoCollection<Document> getCollectionByName(String dataBaseName, String collectionName){ return getDatabase(dataBaseName).getCollection(collectionName); }

 3、关于MongoDB 的查询操作

1

2

3

4

5

6

7

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值