MongoDB和Spring-Data-MongoDB的使用

前言

最近学习了几天的MongoDB,就想着顺便把一整个流程完整的记录一下

Linux版本的MongoDB安装

一、MongoDB安装

由于这次不知道是公司内网原因还是阿里云蹦了,本来服务器装了,现在不能用(后来试了下,10.22好像是蹦了),就在win10本地装了一个

简单点流程

  1. 下载安装包 下载地址
    在这里插入图片描述

  2. 跟着提示点就好

  3. 配置环境变量
    在这里插入图片描述
    如果还觉得不够详细可以看这里菜鸟教程

二、原生命令的使用

首先mongo 进入

C:\Users\Administrator
λ mongo
MongoDB shell version v5.0.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("27401952-ca09-459f-bf00-1c91c2bed101") }
MongoDB server version: 5.0.3
================
Warning: the "mongo" shell has been superseded by "mongosh",
which delivers improved usability and compatibility.The "mongo" shell has been deprecated and will be removed in
an upcoming release.
We recommend you begin using "mongosh".
For installation instructions, see
https://docs.mongodb.com/mongodb-shell/install/
================
---
The server generated these startup warnings when booting:
        2021-10-22T12:57:58.519+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
---
MongoDB Enterprise >
MongoDB Enterprise > use admin // 切换到admin数据库
switched to db admin
MongoDB Enterprise > show dbs  // 显示当前数据库
admin    0.000GB
config   0.000GB
local    0.000GB
test     0.000GB
testCol  0.000GB
MongoDB Enterprise > show collections  // 显示当前数据库(admin)下的集合
system.users
system.version
MongoDB Enterprise > use test  // 切换到test数据库
switched to db test
MongoDB Enterprise > show collections // 显示当前数据库(test)下的集合
fruit   // 我这只有一个fruit
MongoDB Enterprise >

到这一步以后,可以直接看菜鸟教程
从创建集合开始,格式大概看一看,可以直接看实例,敲一两小时基本就懂了
在这里插入图片描述

三、Spring-Data-Mongo用法

建议先大概敲一敲原生,再到代码很多逻辑就清楚多了
原生大概我敲了一个下午,之后就开始准备了解Java的用法

前提是个Springboot,首先也是先来一个简单的流程

  1. 引入MongoDB依赖
        <!-- mongoDB -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
  1. application.yml或者properties配置mongoDB数据库连接信息
spring:
  data:
    mongodb:
      uri: mongodb://root:root@127.0.0.1:27017/testCol  // testCol是数据库名称
  1. 准备对于集合的实体
    3.1 mongoDB数据部分
db.fruit.insertMany([{name: "banana", place: {name: "fujian", code: 101}}, {name: "peach", place: {name: "guangxi", code: 102}},
{name: "lemen", place: {name: "sanxi", code: 101}},{name: "lemen", place: {name: "guangdong", code: 101}},{name: "lemen", place: {name: "guangdong", code: 102}}])

db.fruit.insertMany([{name: "tomato", place: {name: "fujian", code: 101}}, {name: "tomato", place: {name: "guangxi", code: 102}},
{name: "lemen", place: {name: "sanxi", code: 101}},{name: "lemen", place: {name: "guangdong", code: 101}},{name: "lemen", place: {name: "guangdong", code: 102}}])

3.2 Java实体部分 // 注意注意,@Document不要去用collation=xxx了,找半天的错

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document("fruit")  
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Fruit {
    @Id
    private ObjectId id;
    private String name;
    private Integer weight;
    private Place place;
}
  1. 在Controller引入MongoTemplate使用
    直接复制走就可以(最简单的CRUD)
import cn.genmer.test.security.common.CommonResult;
import cn.genmer.test.security.model.mongoModel.Fruit;
import com.mongodb.BasicDBObject;
import com.mongodb.client.result.DeleteResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.bson.types.ObjectId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
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.web.bind.annotation.*;

import java.util.Map;

@RestController("/mongo")
@Api(tags = "MongoDB测试控制器")
public class MongoController {
	// 集合名称
    private static final String COLLECTION_NAME = "fruit";

    @Autowired
    private MongoTemplate mongoTemplate;


    /**
     * 新增文档
     * @param fruit
     * @return
     */
    @PostMapping(value = "/insert")
    @ApiOperation("新增")
    public void insert(@RequestBody Fruit fruit){
        Fruit insert = mongoTemplate.insert(fruit);
        if (insert == null){
             System.out.println("新增失败");
        }
       
    }

    /**
     * 更新文档
     * @return
     */
    @ApiOperation("更新")
    @PostMapping(value = "/save")
    public void save(){
        Fruit tmp = mongoTemplate.findOne(Query.query(Criteria.where("id").is("61724f64fb51b1c0458c3f38")), Fruit.class);
        tmp.setName("rush update");
        Fruit save = mongoTemplate.save(tmp);
        if (save == null){
           System.out.println("更新失败");
        }
    }

    /**
     * 删除文档
     * @param id
     * @return
     */
    @ApiOperation("删除")
    @GetMapping(value = "/delete")
    public void delete(@RequestParam String id){

        Query query = Query.query(Criteria.where("id").is(new ObjectId(id)));
        Fruit result = mongoTemplate.findOne(query, Fruit.class);
        mongoTemplate.remove(result);
    }

    /**
     * 查询文档
     * @param id
     * @return
     */
    @ApiOperation("查询")
    @GetMapping(value = "/findOne")
    public void findOne(@RequestParam String id){

        Query query = Query.query(Criteria.where("id").is(new ObjectId(id)));
        Fruit result = mongoTemplate.findOne(query, Fruit.class);
        if (result == null){
           System.out.println("未查询到记录");
        }
         System.out.println(result);
    }
}

  1. 结束

参考文档

  1. 菜鸟教程-win10安装MongoDB
  2. 菜鸟教程-原生命令
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值