MongoDB--Spring

官网下载 MongoDB


mongodb官网

下载后解压,配置文件

cfg 复制代码
# 数据存储目录
storage:
  dbPath: D:\mongodb8\data\db
  

# 日志配置
systemLog:
  destination: file
  path: D:\mongodb8\log\mongod.log
  logAppend: true

# 网络配置
net:
  port: 27017
  bindIp: 127.0.0.1  
# 新增:启用身份验证
security:
  authorization: enabled  

官网下载 momgosh

mongosh官网下载

启动mongodb,整合spring

maven 依赖

xml 复制代码
    <!--        mongoDB-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <version>3.0.0</version>
            <scope>compile</scope>
        </dependency>

yml配置

yml 复制代码
    mongodb:
      database: testdb
#      uri: mongodb://localhost:27017/testdb
      username: appuser
      password: App@123
#      必须是admin
      authentication-database: testdb
      host: localhost:27017
      port: 27017

启动项目配置时,必须使得用户有操作database=testdb数据库的权限 ,如果没权限则后需得赋予权限;

另一个authentication-database: testdb 即用户在testdb能查到,否则就会提示未授权

简单的CRUD

java 复制代码
 

/**
 * @className: MongoDbController
 * @author: lcy
 * @date: 2026/4/17 9:07
 * @Version: 1.0
 * @description:
 */
@RestController
@RequestMapping("/Mongo")
public class MongoDbController {


    @Autowired
    private MongoTemplate mongoTemplate;

    @PostMapping("/save")
    public Fruit addMongoDbData(@RequestBody Fruit fruit) {
        Fruit insert = mongoTemplate.insert(fruit);
        return insert;
    }

    @PostMapping("/saveBatch")
    public List<Fruit> addBatchMongoDbData(@RequestBody List<Fruit> fruits) {
        List<Fruit> fruitList = mongoTemplate.insert(fruits, "fruitList").stream().toList();
        return fruitList;
    }


    @GetMapping("/selectOne")
    public Fruit getOneMongoDbData(String serialNumber) {
        Query query = new Query();

        query.addCriteria(Criteria.where("serialNumber").is(serialNumber));
        List<Fruit> fruits = mongoTemplate.find(query, Fruit.class);
        if (!CollectionUtils.isEmpty(fruits)) {
            return fruits.stream().findFirst().get();
        }
        return null;
    }
    @GetMapping("/selectAll")
    public  List<Fruit> getAllMongoDbData(String collectionName) {
        List<Fruit> fruits = mongoTemplate.find(new Query(), Fruit.class,collectionName);

        return fruits;
    }
    @GetMapping("/selectOne2")
    public Fruit getOneMongoDbData2(String serialNumber) {
        boolean b = mongoTemplate.collectionExists("fruitList");
        boolean b1 = mongoTemplate.collectionExists(Fruit.class);// 获取Fruit 类名,底层还是String
        if (b) {
            Query query = new Query();

            query.addCriteria(Criteria.where("serialNumber").is(serialNumber));
            List<Fruit> fruits = mongoTemplate.find(query, Fruit.class, "fruitList");
            if (!CollectionUtils.isEmpty(fruits)) {
                return fruits.stream().findFirst().get();
            }
        }

        return null;
    }

    @DeleteMapping("/removeFruit")
    public Long removeDataBySth(String fruitName) {

        Query query = new Query();
        query.addCriteria(Criteria.where("fruitName").is(fruitName));
        DeleteResult deleteResult = mongoTemplate.remove(query, "fruit");
        if (deleteResult.wasAcknowledged()) {
            return deleteResult.getDeletedCount();
        }
        return 0L;
    }

    @DeleteMapping("/del/collection")
    public void delCollectionData(String collectionName) {
        mongoTemplate.dropCollection(collectionName);
    }


}
没有权限报错
复制代码
[dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.data.mongodb.UncategorizedMongoDbException: Command failed with error 13 (Unauthorized): 'not authorized on gavin to execute command { insert: "fruit", ordered: true, $db: "gavin", lsid: { id: UUID("5cc08927-d5ff-4fe5-a39f-c9037991cd31") } }' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "not authorized on gavin to execute command { insert: \"fruit\", ordered: true, $db: \"gavin\", lsid: { id: UUID(\"5cc08927-d5ff-4fe5-a39f-c9037991cd31\") } }", "code": 13, "codeName": "Unauthorized"}] with root cause

com.mongodb.MongoCommandException: Command failed with error 13 (Unauthorized): 'not authorized on gavin to execute command { insert: "fruit", ordered: true, $db: "gavin", lsid: { id: UUID("5cc08927-d5ff-4fe5-a39f-c9037991cd31") } }' on server localhost:27017. The full response is {"ok": 0.0, "errmsg": "not authorized on gavin to execute command { insert: \"fruit\", ordered: true, $db: \"gavin\", lsid: { id: UUID(\"5cc08927-d5ff-4fe5-a39f-c9037991cd31\") } }", "code": 13, "codeName": "Unauthorized"}

一般是配置文件 数据库跟用户 相关的配置有问题,请核对

相关推荐
梦帮科技20 分钟前
量子张量网络破局大模型:从矩阵乘积态 (MPS) 到张量列 (TT-SVD) 低秩收缩全推导
网络·数据结构·数据库·线性代数·矩阵·架构·模拟退火算法
曹牧1 小时前
PL/SQL Developer:导出建表语句
数据库·sql
念念不忘 必有回响1 小时前
MySQL 事务与隔离级别完全指南
数据库·mysql
自强的小白2 小时前
Spring事务失效的场景
java·spring
JosieBook2 小时前
【WinForm 代码反脆弱系列】04 数据库操作 —— 连接字符串、连接对象与连接池
数据库·oracle
小蒜学长2 小时前
基于SpringBoot+Vue的小学数学智能出题系统(代码+数据库+LW)
java·数据库·spring boot·后端·智能出题系统
71-32 小时前
MySQL密码重置
数据库·笔记·学习·mysql
锅里游的鱼吖2 小时前
echarts自定义折线图
前端·javascript·数据库
酷虎软件2 小时前
视频加标题字幕 API 接口文档
java·数据库·mysql
夜雪一千3 小时前
MySQL 触发器有哪些应用场景?从入门场景到避坑实战
数据库·mysql