1.centos下安装mongodb
- 创建.repo文件,生成mongodb的源
vi /etc/yum.repos.d/mongodb-org-4.0.repo
- 添加以下配置信息:
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/#releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
- 使用yum安装MongoDB
yum install -y mongodb-org
- 启动MongoDB
# 启动mongodb
systemctl start mongod.service
# 设置开机自启
systemctl enable mongod.service
# 查看mongodb的运行状态
systemctl status mongod.service
- 创建用户,设置账号,密码,权限
# 进入mongo
mongo 192.168.16.134:27017
# 使用admin数据库
> use admin
switched to db admin
> db.createUser({ user:"root", pwd:"123456", roles:["root"] })
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
// 其他数据库
> use test
switched to db test
> db.createUser({ user:"admin", pwd:"123456", roles:["readWrite", "dbAdmin"] })
Successfully added user: { "user" : "root", "roles" : [ "root" ] }
修改mongodb.conf文件,启用身份验证
vim /etc/mongod.conf
security:
authorization: "enabled"
- 使用Robo 3T连接mongodb,下载链接https://robomongo.org/download
2.SpringBoot整合MongoDB
1.添加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.添加如下配置:
itblog表示MongoDB中的itblog库
spring:
data:
mongodb:
uri: "mongodb://192.168.55.1:27017/itblog"
3.编写实体类
@Data
@Document("user")
public class User {
@Id
private String id;
@Field("name")
private String name;
@Field("password")
private String password;
@Field("address")
private String address;
@Field("create_time")
private Date createTime;
}
4.编写dao
public interface UserDao {
List<User> findAll();
User findById(String id);
User save(User user);
User insert(User user);
void deleteById(String id);
}
5.编写service
@Service
public class UserService implements UserDao {
@Autowired
private MongoTemplate template;
@Override
public List<User> findAll() {
return template.findAll(User.class);
}
@Override
public User findById(String id) {
return template.findById(id,User.class);
}
@Override
public User save(User user) {
return template.save(user);
}
@Override
public User insert(User user) {
return template.insert(user);
}
@Override
public void deleteById(String id) {
Query query = new Query();
query.addCriteria(Criteria.where("id").is(id));
template.remove(query, User.class);
}
}
6.编写controller
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("")
public List<User> getAllUsers() {
return userService.findAll();
}
@GetMapping("/{id}")
public User getByUserId(@PathVariable String userId) {
return userService.findById(userId);
}
@PostMapping("")
public User addNewUser(@RequestBody User user) {
if (user.getId() == null) {
return userService.insert(user);
}
return userService.save(user);
}
@DeleteMapping("/{id}")
public String delete(@PathVariable String id) {
User user = new User();
user.setId(id);
userService.deleteById(id);
return "deleted: " + id;
}
@PutMapping("")
public User update(@RequestBody User user) {
return userService.save(user);
}
}
7.使用postman测试: