6.2 整合MongoDB

6.2 整合MongoDB

  • 1. MongoDB简介
  • 2. MongoDB安装
    • 2.1 下载
    • 2.2 配置MongoDB
    • 2.3 MongoDB的启动和关闭
      • 1. 启动MongoDB
      • 2. 关闭MogoDB
    • 2.4 安全管理
  • 3. 整合SpringBoot
    • 3.1 依赖
    • 3.2 MongoTemplate使用
    • 3.3 测试
      • 1. 新增
      • 2. 查询
      • 3. 删除
  • *****************************************************************************

1. MongoDB简介

MongoDB是一种面向文档的数据库管理系统,它是一个介于关系型数据库和非关系型数据库之间的产品,MongoDB功能丰富,它支持一种类似JSON的BSON数据格式既可以存储简单的数据格式,也可以存储复杂的数据类型
MongoDB最大的特点是它支持的查询语言非常强大,并且还支持对数据建立索引。总体来说,MongoDB是一款应用相当广泛的NoSQL数据库。

2. MongoDB安装

本案例使用的MongoDB版本为写作本书时的最新版本4.0.0,安装环境为CentOS 7。安装步骤如下。

2.1 下载

//1.下载MongoDB
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.0.tgz

在这里插入图片描述

//2.解压
tar -zxvf mongodb-linux-x86_64-4.0.0.tgz
//3.重命名
mv mongodb-linux-x86_64-4.0.0 mongodb

2.2 配置MongoDB

进入mongodb目录下,创建两个文件夹db和logs,分别用来保存数据和日志,代码如下:

cd mongodb
mkdir db
mkdir logs

然后进入bin目录下,创建一个新的MongoDB配置文件mongo.conf,文件内容如下:

dbpath=/opt/mongodb/db
logpath=/opt/mongodb/logs/mongodb.log port=27017
fork=true

在这里插入图片描述
配置解释:

  • 第1行配置表示数据存储目录。
  • 第2行配置表示日志文件位置。
  • 第3行配置表示启动端口。
  • 第4行配置表示以守护程序的方式启动MongoDB,即允许MongoDB在后台运行。

2.3 MongoDB的启动和关闭

1. 启动MongoDB

配置完成后,还是在bin目录下,运行如下命令启动MongoDB:

./mongod -f mongo.conf --bind_ip_all

-f 表示指定配置文件的位置,--bind_ip_all则表示允许所有的远程地址连接该MongoDB实例。
在这里插入图片描述
MongoDB启动成功后,在bin目录下再执行mongo命令,进入MongoDB控制台,然后输入db.version(),如果能看到MongoDB的版本号,就表示安装成功:

./mongo
db.version()

在这里插入图片描述

2. 关闭MogoDB

默认情况下,启动后连接的是MogoDB中的test库,而关闭MongoDB的命令需要在admin 库中执行,因此关闭MongoDB需要首先切换到admin库,然后执行db.shutdownServer();命令,完整操作步骤如下:

use admin;
db.shutdownServer();
exit

服务关闭后,执行exit命令退出控制台,此时如果再执行./mongo命令就会执行失败,如图6-14 所示。
图6-14

2.4 安全管理

默认情况下,启动的MongoDB没有登录密码,在生产环境中这是非常不安全的,但是不同于MySQL、Oracle等关系型数据库,MongoDB中每一个库都有独立的密码,在哪一个库中创建用户就要在哪一个库中验证密码。

要配置密码,首先要创建一个用户,例如在admin库中创建一个用户,代码如下:

use admin;
db.createUser({user:"admin",pwd:"Abc1234%",roles:[{role:"readWrite",db:"test"}]})

新创建的用户名为admin,密码是Abc1234%,roles表示该用户具有的角色,这里的配置表示该用户对test库具有读和写两项权限。
在这里插入图片描述

用户创建成功后,关闭当前实例

db.shutdownServer();
exit

然后重新启动,启动命令如下:

./mongod -f mongo.conf --bind_ip_all

启动成功后,再次进入控制台,然后切换到admin库中验证登录(默认连接上的库是test库),验证成功后就可以对test库执行读写操作了,代码如下:

./mongo
db.auth("admin","Abc1234%")

如果db.auth("admin","Abc1234%")命令执行结果为1,就表示认证成功,可以执行对test库的读写操作。
在这里插入图片描述

3. 整合SpringBoot

借助于SpringData MongoDB,SpringBoot为MongoDB也提供了开箱即用的自动化配置方案,具体配置步骤如下。

3.1 依赖

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

3.2 MongoTemplate使用

import com.mongodb.client.result.DeleteResult;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.system.domain.MdbBook;
import com.ruoyi.system.service.MdbService;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.List;@Service
public class MdbServiceImpl implements MdbService {@Resourceprivate MongoTemplate mongoTemplate;/*** 根据作者查询书籍信息** @param author* @return*/@Overridepublic List<MdbBook> findByAuthorContains(String author) {Query query = new Query();query.addCriteria(Criteria.where("author").is(author));return mongoTemplate.find(query, MdbBook.class, "book");}/*** 根据Id查询** @param id* @return*/@Overridepublic MdbBook findById(String id) {return mongoTemplate.findById(id, MdbBook.class);}/*** 新增book** @param book*/@Overridepublic void insertBook(MdbBook book) {book.setId(IdUtils.simpleUUID());mongoTemplate.insert(book, "book");}/*** id删除** @param id*/@Overridepublic void delBookById(String id) {Query query = new Query();query.addCriteria(Criteria.where("_id").is(id));mongoTemplate.remove(query, "book");}
}

3.3 测试

在这里插入图片描述

1. 新增

在这里插入图片描述
在这里插入图片描述

2. 查询

在这里插入图片描述
在这里插入图片描述

3. 删除

在这里插入图片描述
删除朝花夕拾
在这里插入图片描述
在这里插入图片描述

*****************************************************************************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/2446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仓库管理存在的问题及改进对策?

大部分人都指导仓库问题会影响一个仓库操作或与之相关的整个流程链的速度、效率和生产力。但在大多数情况下&#xff0c;只有在流程开始甚至完成后才能识别这些错误。 到那时通常已经来不及阻止错误了&#xff0c;甚至可能来不及减少造成的损害。 所以这也是我写这篇内容的目…

[SWPUCTF 2021 新生赛]re2(不同字符加密相同,逆向修改范围)

无壳 直接看ida 完整exp&#xff1a; resultlist(ylqq]aycqyp{) for i in range(len(result)):if (ord(result[i])<94 or ord(result[i])>96) and (ord(result[i])<62 or ord(result[i])>64):result[i]chr(ord(result[i])2)else:result[i]chr(ord(result[i])-24)…

数据结构实验(三)

算法设计 一、判断回文序列 1、算法思路&#xff1a; 输入想要判断的字符串&#xff0c;用数组来存放该字符串&#xff0c;给数组一个最左的下标low,和最右的下标right.比较两端的字符是否相等&#xff0c;如果相等那么low,right--.直到遍历完字符串&#xff0c;如果字符不相…

可持续发展:制造铝制饮料罐要消耗多少资源?

铝制饮料罐是人们经常使用的日常用品&#xff0c;无论是在购物、午休还是在自动售货机前选择喝什么的时候&#xff0c;很少有人会想知道装他们喝的饮料的罐子到底是如何制成的&#xff0c;或者这些铝罐的原材料是如何进出的。 虽然有化学品和一些合金进入铝饮料罐制造过程或成为…

大小端解释以及如何使用程序判断IDE的存储模式

今天让我们来了解一下大小端的概念吧 什么是大小端&#xff1f; 大端&#xff08;存储&#xff09;模式&#xff1a;指的是数据的低位保存在内存的高地址处&#xff0c;而数据的高位则保存在内存的低地址处。 小端&#xff08;存储&#xff09;模式&#xff1a;指的是数据的低位…

在 Windows 系统上彻底卸载 TeamViewer 软件

在 Windows 系统上彻底卸载 TeamViewer 软件 References 免费版仅供个人使用 您的会话将在 5 分钟后终止 Close TeamViewer by locating the TeamViewer icon in the system tray, right click and “Exit TeamViewer”. Right click Windows start menu then Control Panel -…

“PowerInfer:消费级GPU上的高效大语言模型推理引擎“

PowerInfer是由上海交通大学IPADS实验室开发的一个高效大语言模型&#xff08;LLM&#xff09;推理引擎&#xff0c;专为个人电脑&#xff08;PC&#xff09;上的消费者级GPU设计。它通过利用LLM推理中的高局部性&#xff0c;实现了快速且资源消耗低的模型推理&#xff0c;这一…

阿里二面凉了,难蹦。。。

分享一位同学阿里巴巴的后端面经&#xff0c;共有 2 面&#xff0c;第一面很顺利过了&#xff0c;可惜挂在第二面。 这两面的知识点范围&#xff0c;我帮大家罗列一下&#xff1a; 网络&#xff1a;TCP、HTTP mysql&#xff1a;索引应用、索引结构、隔离级别、最左匹配 redis…

数据分析专家能力模型

招式&#xff1a;懂商业&#xff08;业务能力&#xff09; 外功更偏重于技能&#xff0c;首先需要懂招式&#xff0c;即懂商业&#xff0c;数据分析最终是为业务服务的&#xff0c;无论是互联网企业准求的用户增长和UJM分解&#xff0c;还是传统企业追求的降本增效和精细化运营…

图像处理之Retinex算法(C++)

图像处理之Retinex算法&#xff08;C&#xff09; 文章目录 图像处理之Retinex算法&#xff08;C&#xff09;前言一、单尺度Retinex&#xff08;SSR&#xff09;1.原理2.代码实现3.结果展示 二、多尺度Retinex&#xff08;MSR&#xff09;1.原理2.代码实现3.结果展示 三、带色…

Axure设计美观友好的后台框架页

使用Axure设计后台框架页 优点介绍&#xff1a; **1、使用中继器灵活配置菜单项&#xff1b; 2、二级菜单面板跟随一级菜单位置显示&#xff1b; 3、菜单链接打开后&#xff0c;联动添加tab标签&#xff1b; 4、标签页与iframe内容联动&#xff0c;可关闭&#xff1b; 5、左侧…

JVM--Java对象到底存在哪?

Java对象存放在堆中&#xff0c;但堆又分为新生代和老年代&#xff0c;新生代又细分为 Eden、From Survivor、To Survivor。那我们创建的对象到底在哪里&#xff1f; 堆分为新生代和老年代&#xff0c;新生代用于存放使用后就要被回收的对象&#xff08;朝生夕死&#xff09;&a…

iOS - 多线程的安全隐患

文章目录 iOS - 多线程的安全隐患1. 卖票案例2. 多线程安全隐患的解决方案2.1 iOS中的线程同步方案2.2 同步方案的使用2.2.1 OSSpinLock2.2.1.1 使用方法&#xff1a;2.2.1.2 案例 2.2.2 os_unfair_lock2.2.2.1 使用方法&#xff1a;2.2.2.2 案例 2.2.3 pthread_mutex2.2.3.1 使…

【Ne4j图数据库入门笔记1】图形数据建模初识

1.1 图形建模指南 图形数据建模是用户将任意域描述为节点的连接图以及与属性和标签关系的过程。Neo4j 图数据模型旨在以 Cypher 查询的形式回答问题&#xff0c;并通过组织图数据库的数据结构来解决业务和技术问题。 1.1.1 图形数据模型介绍 图形数据模型通常被称为对白板友…

【大模型】大模型时代的语音合成:音频的离散化表示

&#x1f512;文章目录 &#x1f4ca;什么是音频离散化&#x1f3ac;音频离散化是什么 &#x1f308;SoundStream、Encodec&#x1f302; SoundStream&#x1f680;Encodec &#x1f4ca;什么是音频离散化 &#x1f3ac;音频离散化是什么 在自然语言处理&#xff08;NLP&…

Amazon云计算AWS之[2]弹性计算云EC2

文章目录 说明EC2基本架构Amazon机器映象&#xff08;AMI&#xff09;实例&#xff08;Instance&#xff09;弹性块存储&#xff08;EBS&#xff09; EC2关键技术地理区域和可用区域EC2通信机制弹性负载均衡监控服务自动缩放服务管理控制台 EC2安全及容错机制EC2弹性IP地址 说明…

KingbaseES数据库copy导入导出

数据库版本&#xff1a;KingbaseES V008R006C008B0014 文章目录如下 1. 语法说明 2. 导出数据 2.1. 基本用法 2.2. 只导出某列 2.3. 指定分隔符 2.4. 导出为二进制格式 2.5. 替换导出的NULL数据 2.6. 导出SELECT查询结果 3. 导入数据 3.1. 基本用法 3.2. 只导入某列…

恒峰智慧科技—森林消防泵:既可灭除火灾,又可清理水患

在广袤的森林中&#xff0c;火灾与水患如同潜伏的猛兽&#xff0c;时刻威胁着生态的安全。然而&#xff0c;随着科技的进步&#xff0c;我们有了更强大的武器来对抗这些威胁——森林消防泵。这款神奇的设备不仅能迅速扑灭火灾&#xff0c;还能在雨季到来时清理水患&#xff0c;…

Linux:进程与计划任务

文章目录 Linux&#xff1a;进程与计划任务一、进程1、进程是什么2、进程状态 二、列出进程命令1、查看静态的进程统计信息——“ps”Play1&#xff1a;“ps aux”Play2:ps -elf 2、查看静态的进程统计信息——“top”段首解析进程信息区解释 三、运行与终止进程3.1、运行进程3…

spring的跨域问题

跨域问题 什么是跨域解决跨域 什么是跨域 跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃取数据。如果出现了以下情况中的任意一种&#xff0c;那么它就是跨域请求&#xff1a; 1、协议不同&#xff0c;如 http 和 h…