MongoDB实战:Java客户端整合MongoDB、SpringBoot整合MongoDB

一、Java客户端整合MongoDB

首先我们创建一个Maven项目。

1. 引入pom依赖

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

2. 测试代码

package com.jihu;

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.InsertOneResult;
import org.bson.Document;
import org.bson.conversions.Bson;

import static com.mongodb.client.model.Filters.eq;

public class QuickStart {
    public static void main(String[] args) {
        // 连接本地默认端口的Mongod
        // MongoClient mongoClient = MongoClients.create()

        // 连接远程服务的指定端口的Mongod
        // MongoClient mongoClient = MongoClients.create("mongodb://host1:27017");

        // 连接指定端口复制集
        // MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet");

        // 连接mongos路由: 连接一个
        // MongoClient mongoClient = MongoClients.create( "mongodb://localhost:27017" );

        // 连接多个mongos路由。
        // MongoClient mongoClient = MongoClients.create("mongodb://192.168.131.171:4000,192.168.131.171:4001,192.168.131.171:4002");

        // 注意,这里我们配置mongos服务信息即可
        MongoClient mongoClient = MongoClients.create("mongodb://192.168.131.171:4000");

        //获取数据库
        MongoDatabase database = mongoClient.getDatabase("order");

        // 获取集合
        MongoCollection<Document> productdesc = database.getCollection("accounts");

        // 添加数据
//        Document doc = new Document("name", "MongoDB")
//                .append("type", "database")
//                .append("count", 1)
//                .append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
//                .append("info", new Document("x", 203).append("y", 102));

        // accounts结构:name和 age
        Document doc = new Document().append("name", "xiaoyixian")
                .append("age", "23");

        InsertOneResult result = productdesc.insertOne(doc);
        System.out.println(result);


        // === 查询
        // 构建等值查询条件, Filters这个类中定义了很多的静态方法进行过滤
        Bson eq = eq("name", "xiaoyixian");
        FindIterable<Document> find = productdesc.find(eq);
        Document first = find.first();
        System.out.println(first);

    }
}

在这里插入图片描述
此时已经插入和查询成功了。

我们连接到mongs客户端中验证一下:
在这里插入图片描述
我们已经完成了java客户端和MongoDB的整合。更多的操作可以去了解详细的API。

官网demo:https://mongodb.github.io/mongo-java-driver/4.1/driver/

二、SpringBoot整合MongoDB

官网资料:https://docs.spring.io/spring-data/mongodb/docs/3.1.2/reference/html/#preface

我们首先还是先创建一个SpringBoot项目。
在这里插入图片描述

1. 引入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>springboot-mongo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.16</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2. 配置类

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

package com.jihu.conf;

import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.core.MongoTemplate;

@Configuration
public class AppConfig {

    public @Bean
    MongoClient mongoClient() {
        return MongoClients.create("mongodb://192.168.131.171:4000");
    }

    public @Bean
    MongoTemplate mongoTemplate() {
        return new MongoTemplate(mongoClient(), "order");
    }
}

3. 启动类

@SpringBootApplication
public class MongoApplication {
    public static void main(String[] args) {
        SpringApplication.run(MongoApplication.class, args);
    }
}

4. 实体类

package com.jihu.entity;

public class Person {

    private String id;
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
    }

}

5. 测试类

这个类实现了Spring的ApplicationRunner接口中的run方法,Spring启动的时候就会执行该方法。

package com.jihu.mongo;

import com.jihu.entity.Person;
import com.mongodb.client.MongoCollection;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Component;

import java.util.List;

import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;
import static org.springframework.data.mongodb.core.query.Update.update;

@Component
@Slf4j
public class ApplicationRunnerTest implements ApplicationRunner {

    @Autowired
    private MongoTemplate mongoOps;

    // spring启动的时候会调用这个方法
    @Override
    public void run(ApplicationArguments applicationArguments) {

        Person p = new Person("Marco", 34);

        // 插入文档
        mongoOps.insert(p);
        log.info("Insert: " + p);

        // 查询文档
        p = mongoOps.findById(p.getId(), Person.class);
        log.info("Found: " + p);

        // 更新文档
        mongoOps.updateFirst(query(where("name").is(p.getName())), update("age", 35), Person.class);
        p = mongoOps.findOne(query(where("name").is(p.getName())), Person.class);
        log.info("Updated: " + p);

        // 删除文档
        mongoOps.remove(p);

        // Check that deletion worked
        List<Person> people = mongoOps.findAll(Person.class);
        log.info("Number of people = : " + people.size());
        mongoOps.dropCollection(Person.class);
    }
}

在这里插入图片描述
从结果可以看到,已经可以成功使用springboot调用mongo了。

三、关于事务

mongo支持事务,但是很影响性能!我们一般不会开启事务。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot整合MongoDB的详细步骤如下: 1. 首先,在项目的pom.xml文件中添加MongoDB的Maven依赖项。可以使用以下坐标引入MongoDB依赖: ``` <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> </dependencies> ``` 2. 在项目的application.yml或application.properties文件中配置MongoDB的连接信息。可以使用以下格式配置MongoDB的URI: ``` spring: data: mongodb: uri: mongodb://ip地址:27017/数据库名 ``` 如果MongoDB需要用户名和密码进行验证,可以使用以下格式配置MongoDB的URI: ``` spring: data: mongodb: uri: mongodb://用户名:密码@ip地址:27017/数据库名 ``` 3. 在代码中使用MongoTemplate进行MongoDB的操作。首先需要在需要使用MongoTemplate的类中注入MongoTemplate实例,可以使用@Autowired注解注入: ``` @Autowired private MongoTemplate mongoTemplate; ``` 4. 可以使用MongoTemplate进行基本的增删改查操作。例如,可以使用save()方法保存文档到MongoDB集合中: ``` Book book = new Book(); book.setId(10); book.setName("testMongoDB"); book.setType("testMongoDB"); book.setDescription("testMongoDB"); mongoTemplate.save(book); ``` 5. 可以使用MongoTemplate进行细节查询,例如复杂查询、分页和排序。可以使用find()方法和Query对象进行查询,如下所示: ``` List<Book> result = mongoTemplate.find(new Query(Criteria.where("字段").is("值")), Book.class); ``` 其中,"字段"是需要查询的字段名,"值"是需要查询的值,Book.class是需要查询的实体类。 这些是Spring Boot整合MongoDB的基本步骤,通过配置和使用MongoTemplate,可以方便地进行MongoDB的操作和查询。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [springboot整合mongoDb](https://blog.csdn.net/z_hy2018/article/details/131227442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [springboot整合mongodb changestream代码](https://download.csdn.net/download/zhangcongyi420/82033169)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值