一:安装MongoDB
下载
- 下载mongodb:地址,也可以到官网选择版本
- 上传至服务器,解压
tar -zxvf mongodb-linux-x86_64-4.0.0.tgz
,更改文件名mv mongodb-linux-x86_64-4.0.0 mongodb
配置
- 进入mongodb下,新建文件夹,
mkdir db
mkdir logs
- 进入bin下,创建一个新的mongodb配置文件,mongo.conf,内容如下
dbpath=/root/mongodb/db
logpath=/root/mongodb/logs/mongodb.log
port=27017
fork=true
- 第一行表示数据存储目录
- 第二行表示日志文件位置
- 第三行表示配置的端口
- 第四行表示以守护程序的方式启动MongoDB,即可以在后台运行
启动和关闭
- 依然在bin下,启动mongodb
./mongod -f mongo.conf --bind_ip_all
- -f表示配置文件的位置,–bind_ip_all则允许所有的远程连接
- bin下执行
./mongo
,db.version()
,出现如下则安装成功 - 默认情况下连接的是test库,而关闭mongodb的命令则需要在admin库执行
use admin;
db.shutdownServer();
exit
安全管理
- MongoDB每一个库都有独立的密码,在哪一个库中创建用户,就要在哪一个库中验证密码,例如在admin中创建一用户
use admin;
db.createUser({user:"zthero",pwd:"123",roles:[{role:"readWrite",db:"test"}]});
其中设置了用户名和密码,角色权限配置了该用户对test库有读和写的权限
9. 用户创建成功后关闭当前实例,然后重新启动
./mongod -f mongo.conf --auth --bind_ip_all
- 进入控制台,并测试数据库的认证,执行结果为一则验证成功
./mongo
use admin;
db.auth("zthero","123");
二:整合Spring Boot
借助于Spring Data MongoDB,Spring Boot为MongoDB也提供了开箱即用的自动化配置方案
- 创建一个Spring Boot并添加以下倚赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
- 配置
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=test
spring.data.mongodb.host=192.168.5.129
spring.data.mongodb.port=27017
spring.data.mongodb.username=zthero
spring.data.mongodb.password=123
- 前两行分别配置了用于认证的数据库,和要连接的数据库,可以看到二者是可以分开的
- 创建实体类
package org.sang;
/**
* Created by sang on 2018/7/19.
*/
public class Book{
private Integer id;
private String name;
private String author;
//省略getter/setter
@Override
public String toString() {
return "Book{" +
"id=" + id +
", name='" + name + '\'' +
", author='" + author + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
- 创建DAO,可以发现和JPA十分类似
import org.springframework.data.mongodb.repository.MongoRepository;
import java.util.List;
/**
* Created by sang on 2018/7/20.
*/
public interface BookDao extends MongoRepository<Book,Integer> {
List<Book> findByAuthorContains(String author);
Book findByNameEquals(String name);
}
- 直接创建Controller进行测试
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
* Created by sang on 2018/7/20.
*/
@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);
/*
* [Book{id=1, name='朝花夕拾', author='鲁迅'}, Book{id=2, name='呐喊', author='鲁迅'}]
Book{id=1, name='朝花夕拾', author='鲁迅'}*/
}
}
访问http://localhost:8080/test1 ,控制台打印如下
登入mongoDB查看数据库
6. 使用MongoTemplate
在添加MongoDB相关倚赖后,就会有默认的MongoTemplate注册到sping 容器中,因此可在ConTroller直接注入并使用
@Autowired
MongoTemplate mongoTemplate;
@GetMapping("/test2")
public void test2() {
List<Book> books = new ArrayList<>();
Book b1 = new Book();
b1.setId(3);
b1.setName("围城");
b1.setAuthor("钱钟书");
books.add(b1);
Book b2 = new Book();
b2.setId(4);
b2.setName("宋诗选注");
b2.setAuthor("钱钟书");
books.add(b2);
//插入数据
mongoTemplate.insertAll(books);
//查出所有数据
List<Book> list = mongoTemplate.findAll(Book.class);
System.out.println(list);
//根据id查找
Book book = mongoTemplate.findById(3, Book.class);
System.out.println(book);
}