首页 > 数据库 >MongoTemplate操作MongoDB

MongoTemplate操作MongoDB

时间:2023-12-01 14:02:19浏览次数:31  
标签:name MongoDB MongoTemplate user query 操作 mongoTemplate class User

集成简介

spring-data-mongodb提供了MongoTemplateMongoRepository两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb,MongoRepository的缺点是不够灵活,MongoTemplate正好可以弥补不足。

搭建开发环境

1、创建springboot项目

2、导入依赖


<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.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>

    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.10.1</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

3 添加application配置


spring.data.mongodb.uri=mongodb://192.168.217.128:27017/test

4.添加实体


@Data
@Document("User")
public class User {

 @Id
 private String id;
 private String name;
 private Integer age;
 private String email;
 private String createDate;
}

添加操作


package com.study;

import com.study.mongodb.entiity.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;

@SpringBootTest
class SpringbootMongoDbApplicationTests {

    //注入mongoTemplate
    @Autowired
    private MongoTemplate mongoTemplate;

    //添加操作
    @Test
    void create() {
        User user = new User();
        user.setAge(20);
        user.setName("zhangsan");
        user.setEmail("[email protected]")
        User insert = mongoTemplate.insert(user);
        System.out.println(insert);
    }
}


MongoTemplate操作MongoDB_List

查询操作

1.查询所有


//查询所有
@Test
public void findAll(){
    List<User> userList = mongoTemplate.findAll(User.class);
    System.out.println(userList);
}


MongoTemplate操作MongoDB_spring_02

2.根据id查询


//根据id查询
@Test
public void findId(){
    User user = mongoTemplate.findById("611a1cf8d5ba747098ff4625", User.class);
    System.out.println(user);
}


MongoTemplate操作MongoDB_List_03

3.条件查询


//条件查询
@Test
public void findUserList(){
    //name = zhangsan and age =20
    Query query = new Query(Criteria.where("name").is("zhangsan").and("age").is(20));
    List<User> userList = mongoTemplate.find(query, User.class);
    System.out.println(userList);
}


MongoTemplate操作MongoDB_User_04

4.模糊查询


//模糊查询
    @Test
    public void findLikeUserList(){
        //name like zhangsan
        //regex(Pattern)正则表达式
        String name = "hangsan";
        String regex = String.format("%s%s","^.*",name);
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Query query = new Query(Criteria.where("name").regex(pattern));
        List<User> userList = mongoTemplate.find(query, User.class);
        System.out.println(userList);
    }


MongoTemplate操作MongoDB_spring_05

5.分页查询


//分页查询
    @Test
    public void findPageUserList(){
        int pageNo = 1;
        int pageSize = 3;
        //条件构建
        String name = "hangsan";
        String regex = String.format("%s%s","^.*",name);
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Query query = new Query(Criteria.where("name").regex(pattern));
        //分页构建
        //查询记录数
        long count = mongoTemplate.count(query, User.class);
        //分页
        List<User> userList = mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);
        System.out.println(count);
        System.out.println(userList);
    }


MongoTemplate操作MongoDB_spring_06

修改操作


//修改
    @Test
    public void updateUser(){
        //根据id查询数据
        User user = mongoTemplate.findById("611a1cf8d5ba747098ff4625", User.class);
        //设置修改的值
        user.setName("lisi");
        user.setAge(18);
        //调用方法实现修改操作
        Query query = new Query(Criteria.where("_id").is(user.getId()));
        Update update = new Update();
        update.set("name",user.getName());
        update.set("age",user.getAge());
        UpdateResult upsert = mongoTemplate.upsert(query, update, User.class);
        long count = upsert.getModifiedCount();
        System.out.println(count);
    }


MongoTemplate操作MongoDB_spring_07


MongoTemplate操作MongoDB_spring_08

删除操作


//删除操作
    @Test
    public void deleteUser(){
        Query query = new Query(Criteria.where("_id").is("611a1cf8d5ba747098ff4625"));
        DeleteResult remove = mongoTemplate.remove(query, User.class);
        long deletedCount = remove.getDeletedCount();
        System.out.println(deletedCount);
    }


MongoTemplate操作MongoDB_User_09


MongoTemplate操作MongoDB_User_10

标签:name,MongoDB,MongoTemplate,user,query,操作,mongoTemplate,class,User
From: https://blog.51cto.com/u_15668812/8645502

相关文章

  • Python中使用OpenpyXL操作Excel
    一、安装openpyxl库可以使用命令pipinstallopenpyxl指定版本与切换国内源请查看pyMySQL库那那一文章的详细解答Python中使用PyMySQL库连接MySQL数据库-AiniIT琦玉-博客园(cnblogs.com)二、读取Excel1、读取全部读取excel写法逻辑如下:读取#调用函数,传递文件名#......
  • 新数据库常规操作
    新安装数据库,导完数据后的常规操作,能避免后期使用可能发生的问题数据库日志路径查询selectname,valuefromv$diag_info;确保数据库对象完整从新库建个dblink连接老库CREATEPUBLICDATABASELINKDBLink_nameCONNECTTO userIDENTIFIEDBYxxxxUSING'ORACLE_Insta......
  • vue axios all 接口全部成功之后进行其它操作
    setSelf(){constarr:any=[]list?.forEach((item)=>{constobj={id:1}arr.push(obj)})arr.push()returnt......
  • 图形渲染操作系统分析
    图形渲染操作系统分析迄今为止,博主在博客中阐述的内容包含渲染技术、性能优化、图形API、Shader、GPU、游戏引擎架构、图形驱动等等技术范畴的内容,这些内容都仅仅局限于单个应用程序之中,常常让人有”只缘身在此山中“的感叹。现在是时候更进一步了——进入操作系统(OperatingSyst......
  • 位操作
    数据拼接在通信协议中我们往往只能一个字节一个字节的读取,但是外设一个完整的数据往往不止一个字节,这个时候我们就需要数据拼接:限制数据位数USARTx->DR=(Data&(uint16_t)0x01FF);//USARTx->DR读到的是9位数据(16位数据)检查最高位是否为1 1Byte&0x80//如果最高位......
  • 列表操作符与函数 airScript 1
    #组合操作符并不改变原来的列表的值a=[1,1,1,2]b=[2,2,2,3]c=a+b#print(c)#重复运算符*#print(b*3)##成员资格操作符in#print(2inb)#函数a=[1,2,3,1,1,1]#a.append("haha")#print(a)#b=[3,4,5]a=[1,2,3,1,1,1]#a.extend(b)#改变了a的值,#print......
  • centos上安装redis、redis客户端操作、redis使用场景、通用命令
    centos上安装redis#win上装redis#上线--》centos装了--》详细研究#docker装---》配置--》持久化#官网看看-redis源码-----》自己编译-redisstack----》编译过后的可执行文件-6.x版本#咱们刚刚下了几个软件-redis-6.2.14-reids......
  • SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解
    SQLSELECTINTO语句SELECTINTO语句将数据从一个表复制到一个新表中。SELECTINTO语法将所有列复制到新表中:SELECT*INTOnewtable[INexternaldb]FROMoldtableWHEREcondition;只复制一些列到新表中:SELECTcolumn1,column2,column3,...INTOnewtable[INexte......
  • SQL 数据操作技巧:SELECT INTO、INSERT INTO SELECT 和 CASE 语句详解
    SQLSELECTINTO语句SELECTINTO语句将数据从一个表复制到一个新表中。SELECTINTO语法将所有列复制到新表中:SELECT*INTOnewtable[INexternaldb]FROMoldtableWHEREcondition;只复制一些列到新表中:SELECTcolumn1,column2,column3,...INTOnewtable[INext......
  • SqlServer中常用的一些操作语句
    我们在维护数据库数据的时候,通常会用到各种SQL语句对数据进行操作或者维护,如:查看某个数据库中有哪些用户数据表、每个数据表中总共有多少条数据……SqlServer官方地址:https://learn.microsoft.com/zh-cn/sql1、整理说明我们在维护数据库数据的时候,通常会用到各种SQL语句对数......