
官网下载 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
启动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"}
一般是配置文件 数据库跟用户 相关的配置有问题,请核对

