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

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

相关推荐
葫芦和十三14 小时前
图解 MongoDB 02|BSON:你以为存的是 JSON,其实是带类型的二进制
后端·mongodb·agent
葫芦和十三14 小时前
图解 MongoDB 01|文档数据库
后端·mongodb·agent
倔强的石头_1 天前
《Kingbase护城河》——数据库存储空间全景探测与精细化瘦身实战
数据库
冬奇Lab2 天前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
ClouGence2 天前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
无响应de神2 天前
三、用户与权限管理
数据库·mysql
码云数智-园园3 天前
C++20 Modules 模块详解
java·开发语言·spring
✎ ﹏梦醒͜ღ҉繁华落℘3 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
咖啡八杯3 天前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
Flittly3 天前
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
java·spring boot·spring