目录
1. 什么是MongoDB?
2. 安装MongoDB
1. 离线安装
2. 使用docker-compose安装
3. mongo命令行实战
1. 连接到 MongoDB 数据库
2. 创建集合(表)
3. 插入数据
4. 查询数据
5. 更新数据
6. 删除数据
4. Springboot集成MongoDB实战
Java Main方法中使用示例
1. 添加MongoDB Java驱动依赖
2. 使用Java与MongoDB交互
Springboot集成Mongo示例
1. 添加 MongoDB 依赖
2. 配置 MongoDB 连接
3. 创建实体类
4. 创建 Repository 接口
5. 编写服务层和控制器
6. 运行应用程序
5. 总结
MongoDB是一个面向文档的NoSQL数据库,以其灵活性、可伸缩性和性能而著称。它采用了文档存储模型,数据以JSON类似的BSON格式存储,并支持丰富的查询功能。我们可以使用Java与MongoDB进行交互,实现数据的存储、检索和处理。
官网:MongoDB:应用程序数据平台 | MongoDB
在安装完成后,执行命令行启动mongo:
sudo service mongod start
创建docker-compose.yml文件并写入以下内容
version: '3.8'
services:
mongodb:
image: mongo
container_name: my_mongodb
ports:
- "27017:27017"
volumes:
- ./data:/data/db # 将MongoDB数据挂载到本地目录,可持久化数据
environment:
- MONGO_INITDB_ROOT_USERNAME=admin # MongoDB的初始用户名
- MONGO_INITDB_ROOT_PASSWORD=password # MongoDB的初始密码
restart: always
执行命令创建并启动
docker-compose up -d
执行命令查看MongoDB服务
docker ps
按照上面的方式进行部署完成后,使用命令行连接mongo
# 执行命令进入容器
docker exec -it /bin/bash
# cd 到bin目录 连接mongo
mongosh -u admin -p
#输入密码
root@09b330d49683:/bin# mongosh -u admin -p
Enter password: ********
Current Mongosh Log ID: 6596bf017f07cfefe7ae2079
Connecting to: mongodb://@127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.1.1
Using MongoDB: 7.0.4
Using Mongosh: 2.1.1
For mongosh info see: https://docs.mongodb.com/mongodb-shell/
------
The server generated these startup warnings when booting
2024-01-04T13:58:01.344+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
2024-01-04T13:58:02.323+00:00: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. We suggest setting it to 'never'
2024-01-04T13:58:02.323+00:00: /sys/kernel/mm/transparent_hugepage/defrag is 'always'. We suggest setting it to 'never'
2024-01-04T13:58:02.323+00:00: vm.max_map_count is too low
------
test> show databases;
admin 100.00 KiB
config 60.00 KiB
local 72.00 KiB
test> use admin;
switched to db admin
admin> show tables;
// 使用use命令切换到数据库
use mydb;
// 创建一个名为my_collection的集合
db.createCollection("my_collection");
// 插入一条数据到my_collection集合
db.my_collection.insertOne({ "name": "Alice", "age": 25 });
// 插入多条数据到my_collection集合
db.my_collection.insertMany([
{ "name": "Bob", "age": 30 },
{ "name": "Charlie", "age": 35 }
]);
// 查询my_collection集合中的所有数据
db.my_collection.find();
// 查询年龄大于等于30的数据
db.my_collection.find({ "age": { $gte: 30 } });
// 只返回name字段,不返回_id字段
db.my_collection.find({}, { "name": 1, "_id": 0 });
// 更新符合条件的第一条数据
db.my_collection.updateOne({ "name": "Bob" }, { $set: { "age": 32 } });
// 更新符合条件的所有数据
db.my_collection.updateMany({ "age": { $gte: 30 } }, { $set: { "status": "active" } });
// 删除符合条件的第一条数据
db.my_collection.deleteOne({ "name": "Alice" });
// 删除符合条件的所有数据
db.my_collection.deleteMany({ "age": { $gte: 30 } });
1. 添加MongoDB Java驱动依赖
Maven项目中,在pom.xml
文件中添加以下依赖:
org.mongodb
mongodb-driver-sync
4.4.4
2. 使用Java与MongoDB交互
以下是一个简单的Java示例,演示了如何连接到MongoDB、插入数据并检索数据:
import com.mongodb.client.*;
import org.bson.Document;
public class MongoDBExample {
public static void main(String[] args) {
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
System.out.println("成功连接到MongoDB!");
// 选择数据库和集合
MongoDatabase database = mongoClient.getDatabase("mydb");
MongoCollection collection = database.getCollection("mycollection");
// 插入文档
Document doc = new Document("name", "John Doe")
.append("age", 30)
.append("email", "[email protected]");
collection.insertOne(doc);
System.out.println("文档成功插入!");
// 查询文档
FindIterable documents = collection.find();
for (Document document : documents) {
System.out.println(document.toJson());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
1. 添加 MongoDB 依赖
在 pom.xml
文件中添加 Spring Data MongoDB 依赖:
org.springframework.boot
spring-boot-starter-data-mongodb
2. 配置 MongoDB 连接
在 application.properties
文件中配置 MongoDB 连接信息:
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=mydb
spring.data.mongodb.username=admin
spring.data.mongodb.password=password
3. 创建实体类
创建一个简单的实体类,代表 MongoDB 中的文档:
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "users")
public class User {
@Id
private String id;
private String name;
private int age;
}
4. 创建 Repository 接口
创建一个继承自 MongoRepository
的接口,用于操作 MongoDB 中的数据:
import org.springframework.data.mongodb.repository.MongoRepository;
public interface UserRepository extends MongoRepository {
// 自定义查询方法
User findByName(String name);
// 可以定义其他自定义查询方法
}
5. 编写服务层和控制器
在服务层(Service)和控制器(Controller)中使用 UserRepository
进行数据操作。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
public User saveUser(User user) {
return userRepository.save(user);
}
public List getAllUsers() {
return userRepository.findAll();
}
public User getUserByName(String name) {
return userRepository.findByName(name);
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@PostMapping
public User addUser(@RequestBody User user) {
return userService.saveUser(user);
}
@GetMapping
public List getAllUsers() {
return userService.getAllUsers();
}
@GetMapping("/{name}")
public User getUserByName(@PathVariable String name) {
return userService.getUserByName(name);
}
}
6. 运行应用程序
编写完成后,启动 Spring Boot 应用程序,然后通过rest接口进行访问测试。
MongoDB是一个强大而灵活的NoSQL数据库,通过Java驱动程序,我们可以轻松地连接、操作和管理MongoDB数据库。本文介绍了MongoDB的安装过程,并演示了使用Java与MongoDB进行简单交互的实例。希望这些内容能帮助大家学习和使用MongoDB。