MongoDB 应用实战

1. java 原生客户端

引入maven

XML 复制代码
1 <dependencies>
2 <dependency>
3 <groupId>org.mongodb</groupId>
4 <artifactId>mongodb‐driver‐sync</artifactId>
5 <version>4.1.1</version>
6 </dependency>
7 </dependencies>
java 复制代码
1 public class QuickStart {
2
3 public static void main(String[] args) {
4 // 连接本地默认端口的Mongod
5 // MongoClient mongoClient = MongoClients.create()
6 // 连接远程服务的指定端口的Mongod
7 // MongoClient mongoClient = MongoClients.create("mongodb://host1:27017");
8 // 连接指定端口复制集
9 // MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host
2:27017,host3:27017/?replicaSet=myReplicaSet");
10 // 连接 mongos路由: 连接一个
11 // MongoClient mongoClient = MongoClients.create( "mongodb://localhost:27017"
);
12 // 连接多个mongos路由
13 MongoClient mongoClient =
MongoClients.create("mongodb://111.229.189.98:4000");
14
15
16 //获取数据库
17 MongoDatabase database = mongoClient.getDatabase("productdb");
18
19 // 获取集合
20 MongoCollection<Document> productdesc=database.getCollection( "productdesc"
);
21
22 Document doc = new Document("name", "MongoDB")
23 .append("type", "database")
24 .append("count", 1)
25 .append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
26 .append("info", new Document("x", 203).append("y", 102));
27
28 productdesc.insertOne(doc);
29
30
31 Bson eq = eq("name", "MongoDB");
32 FindIterable<Document> find = productdesc.find(eq);
33 Document first=find.first();
34 System.out.println(first);
35
36 }
37 }

2. Spring Boot 整合:

1. 引入maven

XML 复制代码
1 <?xml version="1.0" encoding="UTF‐8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.or
g/2001/XMLSchema‐instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.or
g/xsd/maven‐4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <parent>
6 <groupId>org.springframework.boot</groupId>
7 <artifactId>spring‐boot‐starter‐parent</artifactId>
8 <version>2.4.0</version>
9 <relativePath/> <!‐‐ lookup parent from repository ‐‐>
10 </parent>
11 <groupId>com.example</groupId>
12 <artifactId>demo</artifactId>
13 <version>0.0.1‐SNAPSHOT</version>
14 <name>demo</name>
15 <description>Demo project for Spring Boot</description>
16
17 <properties>
18 <java.version>1.8</java.version>
19 </properties>
20
21 <dependencies>
22 <dependency>
23 <groupId>org.springframework.boot</groupId>
24 <artifactId>spring‐boot‐starter‐data‐mongodb</artifactId>
25 </dependency>
26 <dependency>
27 <groupId>org.springframework.boot</groupId>
28 <artifactId>spring‐boot‐starter‐web</artifactId>
29 </dependency>
30
31 <dependency>
32 <groupId>org.springframework.boot</groupId>
33 <artifactId>spring‐boot‐starter‐test</artifactId>
34 <scope>test</scope>
35 </dependency>
36 <dependency>
37 <groupId>org.projectlombok</groupId>
38 <artifactId>lombok</artifactId>
39 <version>1.18.12</version>
40 </dependency>
41
42
43 </dependencies>
44
45 <build>
46 <plugins>
47 <plugin>
48 <groupId>org.springframework.boot</groupId>
49 <artifactId>spring‐boot‐maven‐plugin</artifactId>
50 </plugin>
51 </plugins>
52 </build>
53
54 </project>

2. 添加配置类

比如连接上述的 mongos, 使用MongoTemplate 进行数据库操作

java 复制代码
 package com.example.demo.config;
2
3 import com.mongodb.client.MongoClient;
4 import com.mongodb.client.MongoClients;
5 import org.springframework.context.annotation.Bean;
6 import org.springframework.context.annotation.Configuration;
7 import org.springframework.data.mongodb.core.MongoTemplate;
8
9 @Configuration
10 public class AppConfig {
11
12 public @Bean
13 MongoClient mongoClient() {
14 return MongoClients.create("mongodb://111.229.189.98:4000");
15 }
16
17 public @Bean
18 MongoTemplate mongoTemplate() {
19 return new MongoTemplate(mongoClient(), "productdb");
20 }
21 }

3. 测试类

java 复制代码
1 package com.example.demo;
2
3 public class Person {
4
5 private String id;
6 private String name;
7 private int age;
8
9 public Person(String name, int age) {
10 this.name = name;
11 this.age = age;
12 }
13
14 public String getId() {
15 return id;
16 }
17 public String getName() {
18 return name;
19 }
20 public int getAge() {
21 return age;
22 }
23
24 @Override
25 public String toString() {
26 return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
27 }
28
29 }
30
31 package com.example.demo;
32
33 import lombok.extern.slf4j.Slf4j;
34 import org.springframework.beans.factory.annotation.Autowired;
35 import org.springframework.boot.ApplicationArguments;
36 import org.springframework.boot.ApplicationRunner;
37 import org.springframework.data.mongodb.core.MongoTemplate;
38 import org.springframework.stereotype.Component;
39
40 import java.util.List;
41
42 import static org.springframework.data.mongodb.core.query.Criteria.where;
43 import static org.springframework.data.mongodb.core.query.Query.query;
44 import static org.springframework.data.mongodb.core.query.Update.update;
45
46 @Component
47 @Slf4j
48 public class ApplicationRunnerTest implements ApplicationRunner{
49
50 @Autowired
51 private MongoTemplate mongoOps;
52
53 @Override
54 public void run(ApplicationArguments applicationArguments) throws Exception {
55
56 Person p = new Person("Joe", 34);
57
58 // 插入文档
59 mongoOps.insert(p);
60 log.info("Insert: " + p);
61
62 // 查询文档
63 p = mongoOps.findById(p.getId(), Person.class);
64 log.info("Found: " + p);
65
66 // 更新文档
67 mongoOps.updateFirst(query(where("name").is("Joe")), update("age", 35), Perso
n.class);
68 p = mongoOps.findOne(query(where("name").is("Joe")), Person.class);
69 log.info("Updated: " + p);
70
71 // 删除文档
72 mongoOps.remove(p);
73
74 // Check that deletion worked
75 List<Person> people = mongoOps.findAll(Person.class);
76 log.info("Number of people = : " + people.size());
77 mongoOps.dropCollection(Person.class);
78 }
79 }
80
81
82
83
相关推荐
网安Ruler4 分钟前
Web开发-PHP应用&Cookie脆弱&Session固定&Token唯一&身份验证&数据库通讯
前端·数据库·网络安全·php·渗透·红队
R-G-B13 分钟前
【33】C# WinForm入门到精通 ——表格布局器TableLayoutPanel【属性、方法、事件、实例、源码】
开发语言·c#·c# winform·表格布局器·tablelayoutpane
郝学胜-神的一滴31 分钟前
Spring Boot Actuator 保姆级教程
java·开发语言·spring boot·后端·程序人生
赵英英俊39 分钟前
Python day31
开发语言·python
Tisfy1 小时前
LeetCode 2411.按位或最大的最小子数组长度:一次倒序遍历
数据结构·算法·leetcode·题解·位运算·遍历
希艾席帝恩1 小时前
拥抱智慧物流时代:数字孪生技术的应用与前景
大数据·人工智能·低代码·数字化转型·业务系统
Bar_artist1 小时前
离线智能破局,架构创新突围:RockAI与中国AI的“另一条车道”
大数据·人工智能
程序员-Queen1 小时前
RDQS_c和RDQS_t的作用及区别
c语言·开发语言
2202_756749691 小时前
04 基于sklearn的机械学习-梯度下降(上)
人工智能·算法·机器学习