MongoDB - 整合 SpringBoot 操作全流程

这篇具有很好参考价值的文章主要介绍了MongoDB - 整合 SpringBoot 操作全流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、MongoDB 整合 SpringBoot

1.1、引入依赖

1.2、配置文件

1.3、集合操作

1.4、相关注解

1.5、文档操作

1.5.1、查询

1.5.2、更新

1.5.3、删除


一、MongoDB 整合 SpringBoot


1.1、引入依赖

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

1.2、配置文件

spring:
  data:
    mongodb:
      uri: mongodb://192.168.73.3:27017/demo
#      mongodb 一般不设置密码
#      username: root
#      password: 1111

uri 格式为: mongodb://ip 地址:mongodb 端口号/集合名

1.3、集合操作

Ps:以 demo 集合为例

a)创建集合

        if(!mongoTemplate.collectionExists("demo")) {
            //不存在才能创建,如果以及存在再创建就会报错
            mongoTemplate.createCollection("demo");
        }

b)删除集合

        mongoTemplate.dropCollection("demo1");

1.4、相关注解

a)@Document

  • 修饰范围:在类上.
  • 作用:映射当前类的一个对象为 mongo 的一条文档.
  • 属性:value 和 collection 都是用来表示操作的集合名.

b)@Id

  • 修饰范围:成员变量、方法.
  • 作用:将值映射成文档的 _id.

c)@Field

  • 修饰范围:成员变量、方法.
  • 作用:将值映射为文档中的一个 key 名称.

d)@Transient

  • 修饰范围:成员变量、方法.
  • 租用:指定值不参与文档序列化.

以 User 类为例:

@Document("demo") //表示当前文档属于哪个集合
public class User {

    @Id //当前类的 id 映射文档中的 _id
    private Integer id;
    private String name;
    private Integer age;
    @Field("work_day")  //当前类的 workDay 映射文档中的 work_day
    private Date workDay;

    public User(Integer id, String name, Integer age, Date workDay) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.workDay = workDay;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", workDay=" + workDay +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getWorkDay() {
        return workDay;
    }

    public void setWorkDay(Date workDay) {
        this.workDay = workDay;
    }
}

1.5、文档操作

1.5.1、查询

        //1.查询所有
        System.out.println("------------------------------------------------");
        List<User> users = mongoTemplate.findAll(User.class);
        users.forEach(System.out::println);

        //2.根据 id 查询指定文档
        System.out.println("------------------------------------------------");
        User byId = mongoTemplate.findById(1, User.class);
        System.out.println(byId);

        //3.根据查询条件进行查询(参数1: 查询条件, 参数2: 返回类型)
        System.out.println("------------------------------------------------");
//        mongoTemplate.find(new Query(), User.class);  //没有查询条件就是查询所有
        //a) 等值查询
        System.out.println("------------------------------------------------");
        List<User> users1 = mongoTemplate.find(Query.query(Criteria.where("name").is("周杰伦")), User.class);
        users1.forEach(System.out::println);

        //b) > 查询: gt()、>= 查询: gte() 、 < 查询: lt()、<= 查询 lte() 查询
        //以 > 为例
        System.out.println("------------------------------------------------");
        List<User> users2 = mongoTemplate.find(Query.query(Criteria.where("age").gt(30)), User.class);
        users2.forEach(System.out::println);

        //4.and 查询
        System.out.println("------------------------------------------------");
        List<User> users3 = mongoTemplate.find(Query.query(Criteria.where("name").is("薛之谦").and("age").is(40)), User.class);
        users3.forEach(System.out::println);

        //5.or 查询
        System.out.println("------------------------------------------------");
        Criteria criteria = new Criteria();
        criteria.orOperator(
        Criteria.where("name").is("周杰伦"),
                Criteria.where("name").is("薛之谦")
        );
        List<User> users4 = mongoTemplate.find(Query.query(criteria), User.class);
        users4.forEach(System.out::println);

        //6.and 和 or
        System.out.println("------------------------------------------------");
        Criteria criteria1 = new Criteria();
        criteria1.and("age").is(40)
                .orOperator(
                        Criteria.where("name").is("周杰伦"),
                        Criteria.where("name").is("薛之谦")
                );
        List<User> users5 = mongoTemplate.find(Query.query(criteria1), User.class);
        users5.forEach(System.out::println);

        //7.sort
        System.out.println("------------------------------------------------");
        Query query = new Query();
        query.with(Sort.by(Sort.Order.desc("age"))); //desc 降序, asc 升序
        mongoTemplate.find(query, User.class);

        //8.分页: skip limit
        System.out.println("------------------------------------------------");
        Query queryPage = new Query();
        queryPage.with(Sort.by(Sort.Order.desc("age"))) //desc 降序, asc 升序
                .skip(0)
                .limit(3);
        mongoTemplate.find(queryPage, User.class);

        //9.总数
        System.out.println("------------------------------------------------");
        mongoTemplate.count(new Query(), User.class);

        //10.去重 distinct(参数1: 查询条件, 参数2: 去重字段, 参数3: 操作集合, 参数4: 返回类型)
        System.out.println("------------------------------------------------");
        List<String> name = mongoTemplate.findDistinct(new Query(), "name", User.class, String.class);

        //11.json 字符串查询
        System.out.println("------------------------------------------------");
        Query queryJson = new BasicQuery("{name: '周杰伦', age: '20'}");
        List<User> users6 = mongoTemplate.find(queryJson, User.class);

1.5.2、更新

        //1.更新条件
        Query query = Query.query(Criteria.where("name").is("周杰伦"));
        //2.更新内容
        Update update = new Update();
        update.set("age", 20);

        //a) 更新单条
        mongoTemplate.updateFirst(query, update, User.class);
        //b) 更新多条
        mongoTemplate.updateMulti(query, update, User.class);
        //c) 不存在就插入(存在就更新第一条)
        mongoTemplate.upsert(query, update, User.class);

1.5.3、删除

        //1.删除所有
        mongoTemplate.remove(new Query(), User.class);
        //2.条件删除
        mongoTemplate.remove(Query.query(Criteria.where("name").is("林俊杰")), User.class);

MongoDB - 整合 SpringBoot 操作全流程,MongoDB,spring boot,mongodb,后端文章来源地址https://www.toymoban.com/news/detail-797749.html

到了这里,关于MongoDB - 整合 SpringBoot 操作全流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot 集成 Spring Data Mongodb 操作 MongoDB 详解

    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,且与关系数据库的最为相像的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。Mongo 最大的特点是它支持的查询语言非常强大,其语法有点

    2024年02月02日
    浏览(45)
  • 使用Spring Boot操作Redis、ES、MongoDB举例

    在Spring Boot应用程序中操作Redis通常涉及到使用Spring Data Redis,这是一个提供简便方法来操作Redis的库。以下是一个基本示例,演示如何在Spring Boot应用程序中集成和使用Redis: 步骤 1: 添加依赖项 首先,在你的 pom.xml 文件中添加Spring Data Redis的依赖项。 步骤 2: 配置Redis 在你的

    2024年01月25日
    浏览(40)
  • java springboot整合Mongodb 对数据库集合进行增删查改操作

    下面 我们就来做 springboot 整合Mongodb的工作 我们终端打开 Mongodb 安装目录下的bin目录 然后执行 启动服务 然后 打开我们的 springboot 项目 在pom.xml 文件中 导入坐标 有了依赖之后 就还差配置 打开项目中的 application 配置文件 我这里用的 yml 格式 我们在上面 打个 mong 它就会弹出

    2024年01月18日
    浏览(50)
  • Spring Boot进阶(55):SpringBoot之集成MongoDB及实战使用 | 超级详细,建议收藏

            随着大数据时代的到来,数据存储和处理变得越来越重要。而MongoDB作为一种非关系型数据库,具有高效的数据存储和处理能力,被越来越多地应用于各种领域。尤其在Web应用开发中,SpringBoot框架已经成为了主流选择之一。在这篇文章中,我们将探讨如何将MongoD

    2024年02月17日
    浏览(45)
  • 1024程序员节特辑 | Spring Boot实战 之 MongoDB分片或复制集操作

    Spring实战系列文章: Spring实战 | Spring AOP核心秘笈之葵花宝典 Spring实战 | Spring IOC不能说的秘密? 国庆中秋特辑系列文章: 国庆中秋特辑(八)Spring Boot项目如何使用JPA 国庆中秋特辑(七)Java软件工程师常见20道编程面试题 国庆中秋特辑(六)大学生常见30道宝藏编程面试题

    2024年02月08日
    浏览(77)
  • 【MongoDB】SpringBoot整合MongoDB

    引入依赖: 1.1 创建集合 创建一个 ”products“ 集合,如果不存在则创建,存在则不创建。 1.2 删除集合 @Document 修饰范围:用在类上 作用:用来映射这个类的一个对象为 mongo 中一条文档数据 属性:{value、collection} 用来指定操作的集合名称 @Id 修饰范围:用在成员变量、方法上

    2024年02月16日
    浏览(48)
  • SpringBoot 整合 MongoDB 连接 阿里云MongoDB

      注:spring-boot-starter-data-mongodb 2.7.5;jdk 1.8  阿里云MongoDB是 副本集实例的 在网上查找了一番,大多数都是教连接本地mongodb或者linux上的mongodb 阿里云上有java版连接教程,但它不是SpringBoot方法配置的,是手动写死的很不方便。 通过程序代码连接MongoDB副本集实例 下面进行配置

    2024年02月14日
    浏览(45)
  • SpringBoot——整合Mongodb

    Mongdb是一个开源,高性能, 无模式的文档型数据库 ,NoSQL数据库产品中的一种,是 最像 关系型数据库的非关系型数据库。 用户数据 存储位置:数据库 特征:永久性存储,修改频率极低 游戏装备数据 存储位置:数据库, MongDB 特征:永久性存储与临时存储相结合,修改频率

    2024年02月10日
    浏览(34)
  • SpringBoot整合MongoDB

    提示:以下是本篇文章正文内容,MongoDB 系列学习将会持续更新 ①添加 SpringData 依赖: ②配置 yml 文件 ,官方连接配置文档 方式一: 方式二: ③直接注入 MongoTemplate 进行操作 回到目录… @Document 修饰范围 :用在类上。 作用 :用来映射这个类的一个对象为 Mongo 中一条文档

    2023年04月26日
    浏览(35)
  • SpringBoot——整合MongoDB详解

    1、JPA方式 测试: 2、MongoTemplate方式 dao接口: 实现类: 测试类: 1、查询 is查询: in查询: 字符模糊查询: 指定字段不返回: 数组中添加或删除一条数据: 批量添加: 数组查询: 数字字符串排序操作 分页: criteria: 解释 eq 等于,第一个参数是对象属性,第二个参数

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包