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

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

相关推荐
数字孪生进化论2 小时前
数据集成实战|从零到一,把物联网数据接入数字孪生IOC需要几步?
数据库·物联网
野生技术架构师2 小时前
从两套系统到一条 SQL:SelectDB search() 搞定日志的搜索与分析
数据库·sql
2301_777599372 小时前
CSS如何制作卡片翻转效果_利用backface-visibility与动画
jvm·数据库·python
AllData公司负责人2 小时前
AllData数据中台集成开源项目OpenMetaData,建设元数据与数据血缘平台!
数据库·实时数仓·元数据·streampark·数据血缘·openmetadata
解救女汉子2 小时前
Python 中正确声明、重新赋值并安全使用 None 初始化变量的完整指南
jvm·数据库·python
wsdswzj2 小时前
数据库基础安全
数据库·安全
a9511416422 小时前
CSS 悬停箭头闪烁偏移问题的根源与稳定解决方案
jvm·数据库·python
Shorasul2 小时前
安装宝塔面板提示端口被占用_查找并终止占用进程
jvm·数据库·python
oradh2 小时前
Oracle数据库索引组织表概述
数据库·oracle·oracle基础·oracle索引组织表·索引组织表·iot表