当前位置: 首页 > news >正文

MongoDB简介及SpringBoot整合

一、概述

MongoDB中的记录是一个文档,它是一个数据结构组成 字段和值对。MongoDB文档类似于JSON。对象。

字段的值可能包括其他文档、数组、 和文档数组:

  • 数据库(Database):和关系型数据库一样,每个数据库中有自己的用户权限,不同的项目组可以使用不同的数据库

  • 集合(Collection): 集合指的是文档组(类似于 Mysql 中的表的概念),里面可以存储许多文档

  • 文档(Document): 文档是 MongoDB 中最基本的数据单元,由键值对组成,类似于 JSON 格式,可以存储不同字段,字段的值可以包括其他文档、数组和文档数组

官网:https://www.mongodb.com/

二、主要特点

1、高性能

MongoDB提供高性能的数据持久性。特别

  • 对嵌入式数据模型的支持减少了数据库上的 I/O 活动 系统。

  • 索引支持更快的查询,并且可以包含来自嵌入式的键 文档和数组。

2、查询接口

MongoDB Query API 支持读写 操作(CRUD)以及:

  • 数据聚合

  • 文本搜索和地理空间查询。

3、高可用性

MongoDB的复制工具,称为副本集提供:

  • 自动故障转移

  • 数据冗余。

一个副本集是一组 维护相同数据集的MongoDB服务器,提供冗余 以及提高数据可用性。

4、水平可扩展性

MongoDB提供水平可扩展性作为其核心功能的一部分:

  • 分片跨 计算机群集。

  • 从3.4开始,MongoDB支持创建区的数据基于分片键.在一个 平衡集群,MongoDB直接读取和写入区域覆盖 只到区域内的那些碎片。请参阅的区手册页了解更多信息。

5、支持多个存储引擎

MongoDB支持多个存储引擎:

  • WiredTiger 存储引擎(包括对静态加密)

  • In-Memory存储引擎。

此外,MongoDB提供了可插拔的存储引擎API,允许 为MongoDB开发存储引擎的第三方

6、MongoDB的体系结构与术语

MongoDB 是最像关系型数据库的非关系型数据库,之所以这样子说,是因为它的体系结构和MySQL 是比较像的。

我们通过对比的形式对 MongoDB 的体系结构做一个初步的了解。

SQL术语/概念

MongoDB术语/概念

解释/说明

database

database

数据库

table

collection

数据库表/集合

row

document

表中的一条数据

column

field

数据字段/域

index

index

索引

table joins

表连接,MongoDB不支持

primary key

primary key

主键,MongoDB自动将_id字段设置为主键

三、SpringBoot整合MongoDB

1、添加MongoDB依赖

Spring Data MongDB 是Spring Data的下的一个模块,在SpringBoot中整合MongoDB就需要添加Spring Data MongDB的依赖

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

2、配置文件

spring:data:mongodb:host: 192.168.136.160port:27017database:leousername:adminpassword:123456

3、实例代码

主要注解:

@Document,文档是 MongoDB 中最基本的数据单元,由键值对组成,类似于 JSON 格式,可以存储不同字段,字段的值可以包括其他文档,数组和文档数组。

@Id(主键):用来将成员变量的值映射为文档的_id的值

@Indexed(索引): 索引是一种特殊的数据结构,存储在一个易于遍历读取的数据集合中,能够对数据库文档中的数据进行排序。索引能极大提高文档查询效率,如果没有设置索引,MongoDB 会遍历集合中的整个文档,选取符合查询条件的文档记录。这种查询效率是非常低的。

@Field(字段): 文档中的字段,类似于 MySql 中的列。

@Aggregation(聚合): 聚合主要用于数据处理,例如统计平均值、求和等。

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;@Document(collection = "Book")
public class Book {@Idprivate String id;private String title;private String author;private String summary;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getSummary() {return summary;}public void setSummary(String summary) {this.summary = summary;}
}

SpringBoot操作MongoDB有两种方式,分别是继承MongoRepository类和service注入MongoTemplate

Repository是用于操作数据库的类

package com.palmer.rachelle.javaspringmongodb.repository;
import com.palmer.rachelle.javaspringmongodb.model.Book;
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;public interface BookRepository extends MongoRepository<Book, String> {List<Book> findByTitleStartsWithOrAuthor(String title, String author);
}

http://www.lryc.cn/news/456.html

相关文章:

  • 读书思考:步步惊心的《技术陷阱》
  • 求你了,不要再在对外接口中使用枚举类型了!
  • Java开发学习(四十六)----MyBatisPlus新增语句之id生成策略控制及其简化配置
  • 章鱼哥听歌
  • 软件测试电商项目实战(写进简历没问题)
  • 算法导论—分治法思想、动态规划思想、贪心思想
  • Spring-Data-Jpa实现继承实体类
  • 多线程环境下的伪共享
  • 【Taylor and Francis】1/2区云计算、物联网、机器学习类,SCIEEI双检,审稿友好
  • CleanMyMac X4.12新版本下载及功能介绍
  • 大数据技术架构(组件)26——Spark:Shuffle
  • 关于Zebec生态的改进提案,即将上线的 Nautilus 链
  • Python数据可视化(三)(pyecharts)
  • 【Redis面试指南】
  • 大数据技术之Hadoop(生产调优手册)
  • 「Vue源码学习」常见的 Vue 源码面试题,看完可以说 “精通Vue” 了吗?
  • FreeModbus RTU 移植指南
  • 《唐诗三百首》数据源网络下载
  • (深度学习快速入门)第五章第一节2:GAN经典案例之MNIST手写数字生成
  • 雁过留痕,竟是病毒的痕迹?
  • Linux基本功系列之sort命令实战
  • 【笔记】移动端自动化:adb调试工具+appium+UIAutomatorViewer
  • 面试复习题--性能检测原理
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • 2023年个人计划
  • 加拿大访问学者家属如何办理探亲签证?
  • 操作系统基础---多线程
  • 2022-12-10青少年软件编程(C语言)等级考试试卷(六级)解析
  • 太酷了,用Python实现一个动态条形图!
  • 单元测试junit+mock