Spring Boot 中使用 MongoDB 增删改查

本文快速入门,MongoDB 结合SpringBoot starter-data-mongodb 进行增删改查

1、什么是MongoDB ?

MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。

MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

2、MongoDB 优缺点

优点

  • 文档结构的存储方式,能够更便捷的获取数据
  • 内置GridFS,支持大容量的存储
  • 海量数据下,性能优越
  • 动态查询
  • 全索引支持,扩展到内部对象和内嵌数组
  • 查询记录分析
  • 快速,就地更新
  • 高效存储二进制大对象 (比如照片和视频)
  • 复制(复制集)和支持自动故障恢复
  • 内置 Auto- Sharding 自动分片支持云级扩展性,分片简单
  • MapReduce 支持复杂聚合
  • 商业支持,培训和咨询

缺点

  • MongoDB 4.0 引入的事务功能,支持多文档ACID特性。4.0之前的版本不支持事务操作
  • MongoDB 占用空间过大 (不过这个确定对于目前快速下跌的硬盘价格来说,也不算什么缺点了)
  • MongoDB没有如MySQL那样成熟的维护工具
  • 无法进行关联表查询,不适用于关系多的数据
  • 复杂聚合操作通过mapreduce创建,速度慢
  • 模式自由,自由灵活的文件存储格式带来的数据错
  • MongoDB 在你删除记录后不会在文件系统回收空间。除非你删掉数据库。但是空间没有被浪费

3、CRUD

3.1、添加依赖


   org.springframework.boot
   spring-boot-starter-web


   org.springframework.boot
   spring-boot-starter-data-mongodb

3、2 Java代码

3.2.1 控制层

package com.johnfnash.learn.mongodb.controller;

import com.johnfnash.learn.mongodb.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
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.data.mongodb.core.query.Update;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private MongoTemplate mongoTemplate;

    // 集合名
    private static final String COLLECTION_NAME = "user";

    @PostMapping("/add")
    public String insert(@RequestBody User user) {
        this.mongoTemplate.insert(user, COLLECTION_NAME);
        return "ok";
    }

    @GetMapping("/list")
    public List<User> query(@RequestParam(value = "dataStatus") Integer dataStatus) {
        Query query = Query.query(Criteria.where("dataStatus").is(dataStatus));
        List<User> users = this.mongoTemplate.find(query, User.class, COLLECTION_NAME);
        return users;
    }

    @GetMapping("/delete")
    public String delete(@RequestParam(value = "userId") String userId) {
        Query query = Query.query(Criteria.where("userId").is(userId));
        this.mongoTemplate.remove(query, COLLECTION_NAME);
        return "ok";
    }

    @PostMapping("/update")
    public String update(@RequestBody User user) {
        Query query = Query.query(Criteria.where("userId").is(user.getUserId()));
        Update update = new Update();
        update.set("age", user.getAge());
        update.set("name", user.getName());
        update.set("email", user.getEmail());
        this.mongoTemplate.updateFirst(query, update, COLLECTION_NAME);
        return "ok";
    }

}

3.2.2 实体类

package com.johnfnash.learn.mongodb.entity;

import java.util.Date;

public class User {

    private String userId;

    private String name;

    private String uclass;

    private String email;

    private Date birthday;

    private int age;

    private int dataStatus;

    public User() {
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUclass() {
        return uclass;
    }

    public void setUclass(String uclass) {
        this.uclass = uclass;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getDataStatus() {
        return dataStatus;
    }

    public void setDataStatus(int dataStatus) {
        this.dataStatus = dataStatus;
    }
}

3.2.3 配置文件(application.properties)

spring.data.mongodb.host=127.0.0.1
spring.data.mongodb.port=27017
spring.data.mongodb.database=admin

使用postman来模拟POST请求。

本文转自

  1. Spring Boot 中使用 MongoDB 增删改查

  2. Springboot集成MongoDB实现CRUD

你可能感兴趣的:(mongodb,spring,boot)