04-MongoDB使用Java API

image-20220813214346098

MongoDB Driver

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.6</version>
</dependency>

代码测试

例子请参考 mongo-java-driver 例子 (opens new window)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
private static final String MONGO_HOST = "xxx.xxx.xxx.xxx";

private static final Integer MONGO_PORT = 27017;

private static final String MONGO_DB = "testdb";


public static void main(String args[]) {
try {
// 连接到 mongodb 服务
MongoClient mongoClient = new MongoClient(MONGO_HOST, MONGO_PORT);

// 连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase(MONGO_DB);
System.out.println("Connect to database successfully");

// 创建Collection
mongoDatabase.createCollection("test");
System.out.println("create collection");

// 获取collection
MongoCollection<Document> collection = mongoDatabase.getCollection("test");

// 插入document
Document doc = new Document("name", "MongoDB")
.append("type", "database")
.append("count", 1)
.append("info", new Document("x", 203).append("y", 102));
collection.insertOne(doc);

// 统计count
System.out.println(collection.countDocuments());

// query - first
Document myDoc = collection.find().first();
System.out.println(myDoc.toJson());

// query - loop all
MongoCursor<Document> cursor = collection.find().iterator();
try {
while (cursor.hasNext()) {
System.out.println(cursor.next().toJson());
}
} finally {
cursor.close();
}

} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
}

著作权归https://pdai.tech所有。 链接:https://www.pdai.tech/md/db/nosql-mongo/mongo-x-usage-5.html

Spring Data 与 MongoDB

在初学使用者而言,常会分不清Spring-data-jpa, spring-data-mongo, springboot-data-mongo-starter以及mongo-driver之间的关联关系, 本节将带你理解它们之间的关系。

Spring Data的层次结构

首先让我们回顾下Spring runtime体系:

img

Spring Data是基于Spring runtime体系的:

下面这个图能够直观反映出它们之间的依赖关系,以及包中类之间的以来关系。@pdai

img

springboot-data-mongo层次结构

我们通过引入springboot-data-mongo-starter包来看它们之间的层次结构:

img

mongodb+Java用法

所以通过上面分析我们可以得到基于mongodb+Java的常见用法:

使用方式及依赖包的引入

  • 引入mongodb-driver, 使用最原生的方式通过Java调用mongodb提供的Java driver;

  • 引入

    1
    spring-data-mongo

    自行配置使用spring data 提供的对MongoDB的封装

    • 使用MongoTemplate 的方式
    • 使用MongoRespository 的方式
  • 引入spring-data-mongo-starter, 采用spring autoconfig机制自动装配,然后再使用MongoTemplate或者MongoRespository方式。

具体使用中文档的参考

spring-data/mongodb 官方的参考文档 (opens new window)

img

一些案例的参考

原生方式

spring-data-mongo

img


04-MongoDB使用Java API
https://janycode.github.io/2022/08/14/05_数据库/05_MongoDB/04-MongoDB使用Java API/
作者
Jerry(姜源)
发布于
2022年8月14日
许可协议