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"}

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

相关推荐
DLYSB_11 分钟前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
儒雅的大叔20 分钟前
MySQL数据库InnoDB数据恢复工具使用总结
数据库·mysql·adb
AI小码44 分钟前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
观远数据1 小时前
ChatBI选型对比:从意图识别到SQL修复,六个维度打分决定是否值得投产
数据库·人工智能·sql
嘉&年华1 小时前
【第008篇】通过dexp和dimp命令导出和导入dmp文件(适用于达梦数据库)
数据库·sql
Hui Baby1 小时前
Spring Security
java·后端·spring
哥是强混2 小时前
Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
网络·数据库·.net
ffqws_3 小时前
redis面试:如何保证双写一致
数据库·redis·缓存
水无痕simon3 小时前
6 数据库同义词
数据库
Geek-Chow3 小时前
微服务认证与授权: 12 — JWKS 深入解析
spring·微服务·安全架构