MongoDB入门介绍与实战

2024-01-07 17:18:55

目录

?

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. 总结


?

1. 什么是MongoDB?

MongoDB是一个面向文档的NoSQL数据库,以其灵活性、可伸缩性和性能而著称。它采用了文档存储模型,数据以JSON类似的BSON格式存储,并支持丰富的查询功能。我们可以使用Java与MongoDB进行交互,实现数据的存储、检索和处理。

官网:MongoDB:应用程序数据平台 | MongoDB

2. 安装MongoDB

1. 离线安装

  1. 下载MongoDB: 前往Download MongoDB Community Server | MongoDB下载对应操作系统的安装程序。
  2. 安装MongoDB: 可以根据文档选择安装方式并设置配置。或参考这篇:【MongoDB】一文带你快速掌握如何在Windows系统和Linux系统中安装部署MongoDB_windows 安装mongodb4-CSDN博客
  3. 启动MongoDB服务

在安装完成后,执行命令行启动mongo:

sudo service mongod start

2. 使用docker-compose安装

创建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

8a8cfe4bafc645998f251e63b50f9459.png

执行命令查看MongoDB服务

docker ps

feac548b4dd443e1a1dc62ce592fb59f.png

3. mongo命令行实战

1. 连接到 MongoDB 数据库

?按照上面的方式进行部署完成后,使用命令行连接mongo

# 执行命令进入容器
docker exec -it <mongo容器id> /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://<credentials>@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;

2. 创建集合(表)

// 使用use命令切换到数据库
use mydb;

// 创建一个名为my_collection的集合
db.createCollection("my_collection");

?

3. 插入数据

// 插入一条数据到my_collection集合
db.my_collection.insertOne({ "name": "Alice", "age": 25 });

// 插入多条数据到my_collection集合
db.my_collection.insertMany([
    { "name": "Bob", "age": 30 },
    { "name": "Charlie", "age": 35 }
]);

?

4. 查询数据

// 查询my_collection集合中的所有数据
db.my_collection.find();

// 查询年龄大于等于30的数据
db.my_collection.find({ "age": { $gte: 30 } });

// 只返回name字段,不返回_id字段
db.my_collection.find({}, { "name": 1, "_id": 0 });

?

5. 更新数据

// 更新符合条件的第一条数据
db.my_collection.updateOne({ "name": "Bob" }, { $set: { "age": 32 } });

// 更新符合条件的所有数据
db.my_collection.updateMany({ "age": { $gte: 30 } }, { $set: { "status": "active" } });

?

6. 删除数据

// 删除符合条件的第一条数据
db.my_collection.deleteOne({ "name": "Alice" });

// 删除符合条件的所有数据
db.my_collection.deleteMany({ "age": { $gte: 30 } });

478e9962631e437e8680014e1a7e6c62.png

?

4. Springboot集成MongoDB实战

Java Main方法中使用示例

1. 添加MongoDB Java驱动依赖

Maven项目中,在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongodb-driver-sync</artifactId>
    <version>4.4.4</version>
</dependency>

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<Document> collection = database.getCollection("mycollection");

            // 插入文档
            Document doc = new Document("name", "John Doe")
                    .append("age", 30)
                    .append("email", "john@example.com");
            collection.insertOne(doc);
            System.out.println("文档成功插入!");

            // 查询文档
            FindIterable<Document> documents = collection.find();
            for (Document document : documents) {
                System.out.println(document.toJson());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

?

Springboot集成Mongo示例

1. 添加 MongoDB 依赖

pom.xml 文件中添加 Spring Data MongoDB 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

?

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, String> {
    // 自定义查询方法
    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<User> 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<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{name}")
    public User getUserByName(@PathVariable String name) {
        return userService.getUserByName(name);
    }

}

?

6. 运行应用程序

编写完成后,启动 Spring Boot 应用程序,然后通过rest接口进行访问测试。

?

5. 总结

MongoDB是一个强大而灵活的NoSQL数据库,通过Java驱动程序,我们可以轻松地连接、操作和管理MongoDB数据库。本文介绍了MongoDB的安装过程,并演示了使用Java与MongoDB进行简单交互的实例。希望这些内容能帮助大家学习和使用MongoDB。

?

文章来源:https://blog.csdn.net/EverythingAtOnce/article/details/135396924
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。