官网下载 MongoDB
mongodb官网
下载后解压,配置文件
# 数据存储目录 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 依赖
<!-- mongoDB--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>3.0.0</version><scope>compile</scope></dependency>yml配置
mongodb:database:testdb# uri: mongodb://localhost:27017/testdbusername:appuserpassword:App@123# 必须是adminauthentication-database:testdbhost:localhost:27017port:27017启动项目配置时,必须使得用户有操作database=testdb数据库的权限 ,如果没权限则后需得赋予权限;
另一个authentication-database: testdb 即用户在testdb能查到,否则就会提示未授权
简单的CRUD
/** * @className: MongoDbController * @author: lcy * @date: 2026/4/17 9:07 * @Version: 1.0 * @description: */@RestController@RequestMapping("/Mongo")publicclassMongoDbController{@AutowiredprivateMongoTemplatemongoTemplate;@PostMapping("/save")publicFruitaddMongoDbData(@RequestBodyFruitfruit){Fruitinsert=mongoTemplate.insert(fruit);returninsert;}@PostMapping("/saveBatch")publicList<Fruit>addBatchMongoDbData(@RequestBodyList<Fruit>fruits){List<Fruit>fruitList=mongoTemplate.insert(fruits,"fruitList").stream().toList();returnfruitList;}@GetMapping("/selectOne")publicFruitgetOneMongoDbData(StringserialNumber){Queryquery=newQuery();query.addCriteria(Criteria.where("serialNumber").is(serialNumber));List<Fruit>fruits=mongoTemplate.find(query,Fruit.class);if(!CollectionUtils.isEmpty(fruits)){returnfruits.stream().findFirst().get();}returnnull;}@GetMapping("/selectAll")publicList<Fruit>getAllMongoDbData(StringcollectionName){List<Fruit>fruits=mongoTemplate.find(newQuery(),Fruit.class,collectionName);returnfruits;}@GetMapping("/selectOne2")publicFruitgetOneMongoDbData2(StringserialNumber){booleanb=mongoTemplate.collectionExists("fruitList");booleanb1=mongoTemplate.collectionExists(Fruit.class);// 获取Fruit 类名,底层还是Stringif(b){Queryquery=newQuery();query.addCriteria(Criteria.where("serialNumber").is(serialNumber));List<Fruit>fruits=mongoTemplate.find(query,Fruit.class,"fruitList");if(!CollectionUtils.isEmpty(fruits)){returnfruits.stream().findFirst().get();}}returnnull;}@DeleteMapping("/removeFruit")publicLongremoveDataBySth(StringfruitName){Queryquery=newQuery();query.addCriteria(Criteria.where("fruitName").is(fruitName));DeleteResultdeleteResult=mongoTemplate.remove(query,"fruit");if(deleteResult.wasAcknowledged()){returndeleteResult.getDeletedCount();}return0L;}@DeleteMapping("/del/collection")publicvoiddelCollectionData(StringcollectionName){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"}一般是配置文件 数据库跟用户 相关的配置有问题,请核对