(十六)Spring Boot NoSQL【MongoDB】

1、MongoDB 简介

  • MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
  • 在高负载的情况下,添加更多的节点,可以保证服务器性能。
  • MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
    在这里插入图片描述

2、MongoDB 安装

本次安装环境是arr64位系统的Linux环境。在指定文件夹下载对应的文件,我此处是在/software中下载。

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-aarch64-rhel82-4.4.4.tgz

然后解压

tar -zxvf mongodb-linux-aarch64-rhel82-4.4.4.tgz 

修改文件名

mv mongodb-linux-aarch64-rhel82-4.4.4 mongodb

然后再当前文件夹下创建文件夹,日志文件和mongo配置文件。
创建文件夹data,文件夹logs,配置文件mongodb.conf,在文件夹中创建日志文件mongod.log。

mkdir data
mkdir logs
touch mongodb.conf
cd logs
touch mongodb.log

随后在mongodb文件夹中使用vim对于mongodb.conf进行修改。

#数据库路径
dbpath=/software/mongodb/data
#日志输出文件路径
logpath=/software/mongodb/logs/mongod.log
#错误日志采用追加模式
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
#端口号 默认为27017
port=27017
#允许远程访问
bind_ip=0.0.0.0
#开启子进程
fork=true
#开启认证,必需先添加用户
#auth=true

随后进入到bin中,启动MongoDB

./mongod --config /software/mongodb/mongodb.conf

在这里插入图片描述
/software/mongodb/bin目录下执行命令:./mongodb进入控制台即可查看当前版本
在这里插入图片描述

注意:如果出现以下错误表示系统版本不匹配。需要重新下载指定版本。

-bash: ./mongod: cannot execute binary file: Exec format error

关闭MongoDB的命令为

./mongod -shutdown -dbpath=/software/mongodb/data

然后将mongodb服务加入环境变量,任何地方都可以使用mongo操作数据库

vi /etc/profile #根目录下的etc
#在最后一行加入
export PATH=$PATH:/software/mongodb/bin 
#路径是你安装目录下的bin目录
:wq #保存退出

随后使其生效

source /etc/profile

然后为了使其可以远程连接,在sbin/中执行命令

iptables -I INPUT -p tcp --dport 27017 -j ACCEPT

接下来在自己浏览器中访问相应地址
在这里插入图片描述
同时也可以在 Navicat 上测试连接是否成功:
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

4、MongoDB 安全

4.1 创建管理账号admin

mongo默认登录不需要密码
注意:账号是在数据库中创建的。
use admin;
db.createUser( {user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})

在这里插入图片描述

4.2 创建ROOT用户

创建完admin管理员,创建一个 超级管理员 root 角色:root
root角色用于 关闭数据库 db.shutdownServer()
db.createUser({user: "root",pwd: "123456",roles: [ { role: "root", db: "admin" } ]})

在这里插入图片描述

4.3 开启auth验证

vim mongo.conf
添加 auth=true 的配置

4.5 使用 Navicat 创建数据库以及账号密码

use testDB; #创建并切换数据库
db.createUser({user: "testDB",pwd: "123456",roles: [ { role: "dbOwner", db: "testDB" } ]});

在这里插入图片描述
Navicat 测试连接登陆:
在这里插入图片描述
在这里插入图片描述

5、MongoDB 使用

5.1 创建 Spring Boot 工程

创建 Spring Boot We 工程 添加 ongoDB 依赖,代码如下:

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

5.1 配置MongoDB

# 验证登录信息的库
spring.data.mongodb.authentication-database=testDB
# 要连接的库
spring.data.mongodb.database=testDB
spring.data.mongodb.host=10.211.55.6
spring.data.mongodb.username=testDB
spring.data.mongodb.password=123456
spring.data.mongodb.port=27017

5.1 创建实体类、dao

public class Book {
    private Integer id;
    private String name;
    private String author;
	//省略get/set方法
}
public interface BookDao extends MongoRepository<Book,Integer> {
        List<Book> findByAuthorContains(String author) ;
        Book findByNameEquals(String name );
}

5.1 创建controller

@RestController
public class BookController{

    @Autowired
    BookDao bookDao;

    @GetMapping("test1")
    public void test1() {
        List<Book> books = new ArrayList<>();
        Book b1 = new Book();
        b1.setId(1);
        b1.setName("朝花夕拾");
        b1.setAuthor("鲁迅");
        books.add(b1);
        Book b2 = new Book();
        b2.setId(2);
        b2.setName("呐喊");
        b2.setAuthor("鲁迅");
        books.add(b2);
        bookDao.insert(books);
        List<Book> books1 = bookDao.findByAuthorContains("鲁迅");
        System.out.println(books1);
        Book book = bookDao.findByNameEquals("朝花夕拾");
        System.out.println(book);
    }
}

5.2 接口测试

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

5.3 使用 MongoTemplate

除了继承 MongoRepository 外, Spring Data MongoDB 还提 MongoTemplate 用来方便地操作 MongoDB 。在 Sprin Boot 中,若添加了 MongoDB 相关的依赖 而开发者并没有提供 MongoTemplate ,则默认会有MongoTemplate 注册到 Spring 容器 中, 相关配置源码在 MongoDataAutoConfiguration 类中。因此用户可以直接使用 MongoTemplate,在 Controller 中直接注入 MongoTemplate 就可以使用了,添加如下代码:

@RestController
public class BookController{

    @Autowired
    MongoTemplate mongoTemplate;

    @GetMapping("test1")
    public void test1() {
        List<Book> books = new ArrayList<>();
        Book b1 = new Book();
        b1.setId(1);
        b1.setName("朝花夕拾");
        b1.setAuthor("鲁迅");
        books.add(b1);
        Book b2 = new Book();
        b2.setId(2);
        b2.setName("呐喊");
        b2.setAuthor("鲁迅");
        books.add(b2);
        mongoTemplate.insertAll(books);
        List<Book> books1 = mongoTemplate.findAll(Book.class);
        System.out.println(books1);
        Book book = mongoTemplate.findById(2,Book.class);
        System.out.println(book);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值