spring data MongoDB基础

目录

配置MongoDB

MongoDB服务的启动

studio3T客户端

MongoDB和sql术语的区别

MongoDB连接数据库

通过java连接(后面会用spring boot来替换)

使用命令操作MongoDB

查询数据库

用户操作

认证登录

将数据导入数据库(工具)

索引的创建

spring data MongoDB

注解

持久层类的dao规范

spring data 的分页(jpa通用)

条件匹配器

GridFS存取文件

用GridFsTemplate存储文件

存文件

取文件


前言

MongoDB和redis一样是非关系型数据库

spring data MongoDB参考 https://blog.csdn.net/yzj17025693/article/details/89514504

 

配置MongoDB

spring data MongoDB基础_第1张图片

#数据库路径
dbpath=c:\MongoDB\data\
#日志输出文件路径
logpath=c:\MongoDB\logs\mongodb.log
#错误日志采用追加模式,配置这个选项后mongodb的日志会追加到现有的日志文件,而不是从新创建一个新文件
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=false
#端口号 默认为27017
port=27017

 

MongoDB服务的启动

spring data MongoDB基础_第2张图片

测试连接

spring data MongoDB基础_第3张图片

 

studio3T客户端

spring data MongoDB基础_第4张图片

 

MongoDB和sql术语的区别

spring data MongoDB基础_第5张图片

MongoDB存的都是json数据

spring data MongoDB基础_第6张图片

 

MongoDB连接数据库

spring data MongoDB基础_第7张图片

 

通过java连接(后面会用spring boot来替换)

添加对应的依赖包

spring data MongoDB基础_第8张图片

spring data MongoDB基础_第9张图片

 

使用命令操作MongoDB

查询数据库

spring data MongoDB基础_第10张图片

 

创建和删除数据库

创建数据库直接使用use,切换数据库也是use,但是新创建的不显示,

必须要包含一个集合(表的集合)才能显示

spring data MongoDB基础_第11张图片

spring data MongoDB基础_第12张图片

 

集合的创建和删除

必须先切换到某个数据库

spring data MongoDB基础_第13张图片

 

插入文档

spring data MongoDB基础_第14张图片

 

替换文档

相当于先删除后插入

spring data MongoDB基础_第15张图片

 

更新文档

只更新指定的字段,在某些情况下使用更新文档效率肯定会更高点

每条数据的字段可以不一样(同一个字段可以存不同类型的数据,也可以不存)

但是官方建议统一字段,也修改随意修改字段的数据类型,如  一个字符串改成数组

spring data MongoDB基础_第16张图片

 

删除文档

spring data MongoDB基础_第17张图片

 

查询文档

spring data MongoDB基础_第18张图片

spring data MongoDB基础_第19张图片

 

用户操作

创建用户

spring data MongoDB基础_第20张图片

spring data MongoDB基础_第21张图片

 

查询用户和删除用户

spring data MongoDB基础_第22张图片

 

修改用户角色

spring data MongoDB基础_第23张图片

spring data MongoDB基础_第24张图片

 

认证登录

这种方式需要用户名和密码进行登录

spring data MongoDB基础_第25张图片

 

修改密码

spring data MongoDB基础_第26张图片

 

将数据导入数据库(工具)

spring data MongoDB基础_第27张图片

选择json,然后选择文件,然后直接下一步导入即可

spring data MongoDB基础_第28张图片

 

索引的创建

选取一个document(table),然后建立索引,选取字段,勾选unique,直接创建,name就会自动创建

能够防止插入相同的数据,如果这个字段是需要添加的,那么需要使用索引

spring data MongoDB基础_第29张图片

 

 

spring data MongoDB

注解

参考spring data jpa

@Document

指定MongoDB的表,相当于jpa的@Table

@Id 

用于指定id,其它的属性如果和MongoDB里的字段相同,就不需要再配置了,但是Id一定要配

spring data MongoDB基础_第30张图片

 

持久层类的dao规范

参考spring data jpa

继承MongodbRepository

spring data 的分页(jpa通用)

spring data MongoDB基础_第31张图片

页面传过来的肯定是从1开始,PageRequest.of是从0开始,所以我们一般还需要在service层处理一下

spring data MongoDB基础_第32张图片

取出数据

spring data MongoDB基础_第33张图片

 

条件匹配器

可以参考spring data  jpa的  https://blog.csdn.net/long476964/article/details/79677526

spring data MongoDB基础_第34张图片

 

GridFS存取文件

这部分知识需要spring boot和MongoDB整合的知识

spring data MongoDB基础_第35张图片

这2个表是gridFS(MongoDB的一个工具)生成的,fs.files用于存储文件的元信息,比如文件名,文件创建时间

而fs.chunks是存储文件的二进制数据,使用gridFS存的话,会自动给文件拆分成每个256KB大小的块

fs.chunks的表结构

spring data MongoDB基础_第36张图片

fs.files的表结构

他们是一对多的逻辑关系(非物理关系,因为MongoDB没有外键)

fs.files是一的一方, 因为一个文件可能会被拆分成多个256K的fs.chunks

而fs.chunks的files_id字段就对应着fs.files主键

spring data MongoDB基础_第37张图片

 

用GridFsTemplate存储文件

存文件

stroe的第一个参数是文件流,第二个参数是元数据信息,可以写多个

spring data MongoDB基础_第38张图片

 

取文件

取文件会比较复杂一点,因为要设置到下载,

需要用到下载流

下面是创建一个bean,返回GridFSBucket对象

这个对象能开启下载流,进行安全的下载

    @Configuration
    public class MongoConfig {
        @Value("${spring.data.mongodb.database}")
        String db;
        @Bean
        public GridFSBucket getGridFSBucket(MongoClient mongoClient){
            MongoDatabase database = mongoClient.getDatabase(db);
            GridFSBucket bucket = GridFSBuckets.create(database);
            return bucket;
        }
    }
    

从是数据库读取文件

@Test
    public void queryFile() throws IOException
    {

        String fileId = "5cf2b5f5bf9e4125701b46a3";

        //根据id查询文件,会自动指定fs.files这个张表
        //返回了这张表的信息
        GridFSFile gridFSFile =
                gridFsTemplate.findOne(Query.query(Criteria.where("_id").is(fileId)));

        //打开下载流对象,会通过id自动查询到fs.chunks这张表
        GridFSDownloadStream gridFSDownloadStream =
                gridFSBucket.openDownloadStream(gridFSFile.getObjectId());

        //创建gridFsResource,用于获取流对象
        GridFsResource gridFsResource = new GridFsResource(gridFSFile,gridFSDownloadStream);

        //获取流中的数据
        String s = IOUtils.toString(gridFsResource.getInputStream(), "UTF‐8");
        System.out.println(s);
    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(java,web)