Spring Boot 통합 mongodb 데이터베이스 프로 세 스 분석
MongoDB 는 관계 데이터베이스 와 비관 계 데이터베이스 사이 에 있 는 제품 으로 비관 계 데이터베이스 중에서 기능 이 가장 풍부 하고 관계 데이터베이스 와 가장 비슷 하 다.지원 하 는 데이터 구 조 는 매우 느슨 하고 json 과 유사 한 bson 형식 이기 때문에 비교적 복잡 한 데이터 형식 을 저장 할 수 있다.Mongo 의 가장 큰 특징 은 지원 하 는 조회 언어 가 매우 강하 다 는 것 이다.그 문법 은 대상 을 대상 으로 하 는 조회 언어 와 비슷 하고 유사 한 관계 데이터 베이스 시트 조회 의 대부분 기능 을 실현 할 수 있 으 며 데이터 에 대한 색인 도 지원 한다.
2.Spring boot 프로젝트 통합 mongodb
1.mongodb 의존 도 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
2.mongodb 연결 설정spring:
data:
mongodb:
#uri: mongodb://localhost:27017/data_exploration
uri: mongodb://root:[email protected]:27017/data_exploration?authSource=admin&authMechanism=SCRAM-SHA-1
해석:상기 uri 는 각각 로 컬 설정 과 원 격 연결 을 대표 합 니 다.
3.데이터베이스 조작
(1)저장
@Repository
public class ExplorationJobDao {
@Autowired
MongoTemplate mongoTemplate;
public void save(ExplorationJob explorationJob) {
mongoTemplate.save(explorationJob);
}
}
(2)ID 에 따라 데 이 터 를 수정 합 니 다.
public void updateExecutionStatusById(int executionStatus, String jobId) {
Query query = new Query(Criteria.where("jobId").is(jobId));
Update update = new Update().set("executionStatus", executionStatus);
mongoTemplate.updateFirst(query, update, ExplorationJob.class);
}
(3)항목 에 따라 여러 개의 데 이 터 를 수정 합 니 다(ID 에 맞 는 모든 데 이 터 를 조회 한 다음 에 모든 데 이 터 를 수정 합 니 다)
public void update(BusinessExploration businessExploration) {
Query query = new Query(Criteria.where("_id").is(businessExploration.getId()));
Update update = new Update().set("sourceUnit", businessExploration.getSourceUnit())
.set("appSystem", businessExploration.getAppSystem())
.set("businessImplication", businessExploration.getBusinessImplication())
.set("safetyRequire", businessExploration.getSafetyRequire());
mongoTemplate.updateMulti(query, update, TableExploration.class);
}
(4)삭제(ID 에 따라 삭제)
public void delExplorationJobById(String jobId) {
Query query=new Query(Criteria.where("jobId").is(jobId));
mongoTemplate.remove(query,ExplorationJob.class);
}
(5)조건 에 따라 조회(ID 에 따라 조회)
public ExplorationJob getExplorationJobByJobId(String jobId) {
Query query = new Query(Criteria.where("jobId").is(jobId));
ExplorationJob explorationJob = mongoTemplate.findOne(query, ExplorationJob.class);
return explorationJob;
}
(6)모든 것 조회mongoTemplate.findAll(TableExploration.class);
(7)다 중 조건 동적 조회
public List<ExplorationJob> getExplorationByCondition(ExplorationJob explorationJob) {
Query query = new Query();
if (explorationJob.getJobName() != null) {
Pattern pattern = Pattern.compile("^.*" + explorationJob.getJobName() + ".*$", Pattern.CASE_INSENSITIVE);
query.addCriteria(Criteria.where("jobName").regex(pattern));
}
if (explorationJob.getDsType() != null) {
query.addCriteria(Criteria.where("dsType").is(explorationJob.getDsType()));
}
if (explorationJob.getExecutionStatus() != null) {
query.addCriteria(Criteria.where("executionStatus").lte(explorationJob.getExecutionStatus()));
}
List<ExplorationJob> explorationJobs=mongoTemplate.find(query, ExplorationJob.class);
return explorationJobs;
}
(8)조회 최대 치
public Date getMaxExplorationDate(String tableName) {
FindIterable<Document> iterable = mongoTemplate.getCollection("tableExploration")
.find(new BasicDBObject("tableName", tableName)).sort(new BasicDBObject("explorationDate", -1)).skip(0)
.limit(1);
Document doc =null;
if (getDocuments(iterable).size()>0) {
doc=getDocuments(iterable).get(0);
Date date = doc.getDate("explorationDate");
return date;
}else {
return null;
}
}
/**
*
*
* @param iterable
* @return
*/
public static List<Document> getDocuments(FindIterable<Document> iterable) {
List<Document> results = new ArrayList<Document>();
if (null != iterable) {
MongoCursor<Document> cursor = iterable.iterator();
Document doc = null;
while (cursor.hasNext()) {
doc = cursor.next();
results.add(doc);
}
}
return results;
}
(9)그룹 조회(정렬 에 사 용 됨)
public List<TableExploration> getAllTableExplorationGroupByTableName(String jobId){
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.match(Criteria.where("jobId").is(jobId)),
Aggregation.sort(new Sort(Direction.DESC,"explorationDate")),
Aggregation.group("tableName")
.first("_id").as("tableName")
.first("databaseType").as("databaseType")
.first("databaseName").as("databaseName")
.first("networkSituation").as("networkSituation")
.first("userName").as("userName")
.first("password").as("password")
.first("url").as("url")
.first("dataStorage").as("dataStorage")
.first("dataIncrement").as("dataIncrement")
.first("explorationDate").as("explorationDate")
//.push("columnExplorations").as("columnExplorations")
.first("jobId").as("jobId")
);
AggregationResults<TableExploration> aggregationResults= mongoTemplate.aggregate(aggregation, "tableExploration", TableExploration.class);
List<TableExploration> tableExplorations=aggregationResults.getMappedResults();
return tableExplorations;
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.