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://xiahunao.cn/news/2980888.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

每天学习一个Linux命令之stat

每天学习一个Linux命令之stat 简介 在Linux系统中&#xff0c;stat命令用于显示文件的详细信息&#xff0c;包括文件的设备号、文件类型、权限、链接数、所有者、组、大小、时间戳等。stat命令是一个非常常用的命令&#xff0c;能够帮助我们了解文件的属性和状态。本篇博客将介…

uniapp 引用组件后 不起作用 无效果 不显示

根据uniapp官方文档easycom组件规范 只要组件安装在项目的components目录下或uni_modules目录下&#xff0c;并符合components/组件名称/组件名称.(vue|uvue)目录结构&#xff08;注意&#xff1a;当同时存在vue和uvue时&#xff0c;uni-app 项目优先使用 vue 文件&#xff0c;…

用于割草机器人,商用服务型机器人的陀螺仪

介绍一款EPSON推出适用于割草机器人&#xff0c;商用服务型机器人的高精度陀螺仪模组GGPM61&#xff0c;具体型号为GGPM61-C01。模组GGPM61是一款基于QMEMS传感器的低成本航向角输出的传感器模组&#xff0c;它可以输出加速度、角速度及姿态角等信息&#xff0c;为控制机器人运…

【目标检测】FPN特征金字塔完整流程详解

学习视频&#xff1a;1.1.2 FPN结构详解 对比 可以看到FPN是自上而下、自下而上并且可以进行多尺度特征融合的的层级结构。 具体结构 1x1 conv: 对通道数进行调整&#xff0c;不同大小的特征图通道数不同&#xff0c;越高层次的特征图通道数越大&#xff0c;论文中使用256个1…

在 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 -…

[Linux][多线程][三][条件变量][生产者消费者模型][基于BlockingQueue的生产者消费者模型]详细讲解

目录 1.线程同步1.同步概念与竞态条件2.条件变量 2.条件变量函数1.初始化 -- pthread_cond_init()2.销毁 -- pthread_cond_destroy()3.等待条件变量 -- pthread_cond_wait()4.唤醒等待5.为什么pthread_cond_wait()需要互斥量&#xff1f;6.错误的程序设计7.条件变量使用规范 3.…

2024 OceanBase 开发者大会:OceanBase 4.3正式发布,打造PB级实时分析数据库

4月20日&#xff0c;2024 OceanBase开发者大会盛大召开&#xff0c;吸引了50余位业界知名的数据库专家和爱好者&#xff0c;以及来自全国各地的近600名开发者齐聚一堂。他们围绕一体化、多模、TP与AP融合等前沿技术趋势展开深入讨论&#xff0c;分享场景探索的经验和最佳实践&a…

金融风控信用评分卡建模(Kaggle give me credit数据集)

1 数据预处理数据 数据来源于Kaggle的Give Me Some Credit&#xff0c;包括25万条个人财务情况的样本数据 1.1 导包读数据 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.ensemble import RandomForestRegressor import seaborn as …

换脸插件升级导致SDWebUI无法启动cannot import name ‘Undefined‘ from ‘pydantic.fields‘

今天在一台新的机器环境装了SDWEBUI&#xff0c;都使用最新的版本&#xff0c;升级了下换脸的插件&#xff0c;于是乎启动崩溃了。错误如下 Launching Web UI with arguments: --listen --skip-torch-cuda-test --disable-nan-check --skip-version-check --skip-python-versi…

C++信息学奥赛 数据结构认识

数据结构 1.1数据结构分类 1.2基本数据类型 1.3数字编码 1.4字符编码 1.1数据结构分类 数据结构如同一副稳固而多样的框架。为数据的有序组织提供了蓝图&#xff0c;算法得以在此基础上生动起来。 常用的数据结构包括哪些 &#xff0c; &#xff0c; &…

Django中的事务

1 开启全局的事务 DATABASES {default: {ENGINE: django.db.backends.mysql, # 使用mysql数据库NAME: tracerbackend, # 要连接的数据库USER: root, # 链接数据库的用于名PASSWORD: 123456, # 链接数据库的用于名HOST: 192.168.1.200, # mysql服务监听的ipPORT: 3306, …

2024新算法爱情进化算法(LEA)和经典灰狼优化器(GWO)进行无人机三维路径规划设计实验

简介&#xff1a; 2024新算法爱情进化算法&#xff08;LEA&#xff09;和经典灰狼优化器&#xff08;GWO&#xff09;进行无人机三维路径规划设计实验。 无人机三维路径规划的重要意义在于确保飞行安全、优化飞行路线以节省时间和能源消耗&#xff0c;并使无人机能够适应复杂环…

薄板样条插值TPS原理以及torch和opencv实现

薄板样条插值TPS原理以及torch和opencv实现 1、薄板样条插值TPS原理概述原理以及公式推导2、torch实现3、opencv实现1、薄板样条插值TPS原理 概述 薄板样条(Thin Plate Spline),简称TPS,是一种插值方法,可找到通过所有给定点的“最小弯曲”光滑曲面。因为它一般都是基于…

跟着野火从零开始手搓emWin(1)初识emWin

PS&#xff1a;在嵌入式领域&#xff0c;本人认为QT的应用范围和性能几乎吊打市面上所有的GUI工具。但是本人之所以学习emWin&#xff0c;是因为自己有些微不足道的小想法&#xff0c;需要通过它来实现。但是QT有点吃硬件的配置&#xff0c;为了MCU专门发行的QT我又懒得去弄&am…

vscode将本地服务转发到外网地址访问

示例中将本地的5500端口&#xff0c;用vscode进行端口转发&#xff0c;在外网地址访问服务 要转发的端口 转发端口 点击转发端口 输入要转发的端口&#xff0c;按下回车 Enter 点击允许&#xff0c;弹出确认界面后点击打开 转发端口已经成功配置上&#xff0c;右键可见性…

四川赢涟电子商务有限公司是做什么的?

在当今数字化浪潮中&#xff0c;电子商务以其独特的魅力和无限潜力&#xff0c;成为了商业领域的新宠。而在这股潮流中&#xff0c;四川赢涟电子商务有限公司以其对抖音电商的深入研究和专业服务&#xff0c;成为了行业内的佼佼者。 一、深耕抖音&#xff0c;领跑电商新赛道 四…

centos 安装配置文件中心 nacos2.2.3 稳定版

安装mysql 8 参考文章 centos7搭建mysql5.6 && mysql 8.0_centos7 mysql5.6-CSDN博客 安装 jdk 17 官网下载 对应的版本 Java Downloads | Oracle wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_l…

(5)步态识别论文研读——GaitDAN:基于对抗域适应的跨视角步态识别

GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation | IEEE Journals & Magazine | IEEE Xplore GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation 基于对抗与适应 摘要&#xff1a;视角变化导致步态外观存在显着差异。因…

qt实现打包

qt实现打包 qt打包流程如下&#xff1a;打包你要注意的点教程 qt打包流程如下&#xff1a; 1&#xff0c;.Release编译: 1)&#xff0c;找到release目录&#xff08;一般会有debug和release两种模式&#xff09;&#xff0c;就是有exe目录的那个文件夹 2)&#xff0c;给项目…

QT中基于TCP的网络通信

QT中基于TCP的网络通信 QTcpServer公共成员函数信号 QTcpSocket公共成员函数信号 通信流程服务器端通信流程代码 客户端通信流程代码 使用Qt提供的类进行基于TCP的套接字通信需要用到两个类&#xff1a; QTcpServer&#xff1a;服务器类&#xff0c;用于监听客户端连接以及和客…