Spring Boot 에서 빠 른 조작 Mongodb 데이터베이스 안내
17963 단어 springboot조작 하 다.mongodb
Spring Boot 에 Mongodb 를 통합 하 는 것 은 매우 간단 합 니 다.Mongodb 의 Starter 가방 만 가입 하면 됩 니 다.코드 는 다음 과 같 습 니 다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
그리고 Mongodb 의 연결 정 보 를 설정 합 니 다:
spring.data.mongodb.uri=mongodb://192.168.0.13/test
전체 설정 정 보 는 아래 를 참고 하 십시오.
spring.data.mongodb.authentication-database= # Authentication database name.
spring.data.mongodb.database= # Database name.
spring.data.mongodb.field-naming-strategy= # Fully qualified name of the FieldNamingStrategy to use.
spring.data.mongodb.grid-fs-database= # GridFS database name.
spring.data.mongodb.host= # Mongo server host. Cannot be set with URI.
spring.data.mongodb.password= # Login password of the mongo server. Cannot be set with URI.
spring.data.mongodb.port= # Mongo server port. Cannot be set with URI.
spring.data.mongodb.repositories.type=auto # Type of Mongo repositories to enable.
spring.data.mongodb.uri=mongodb://localhost/test # Mongo database URI. Cannot be set with host, port and credentials.
spring.data.mongodb.username= # Login user of the mongo server. Cannot be set with URI.
설정 이 되 어 있 으 면 바로 MongoTemplate 작업 데 이 터 를 주입 할 수 있 습 니 다.데이터 추가
먼저 실체 클래스 를 만 듭 니 다.우 리 는 문장 으로 실체 클래스 를 만 들 고 다음 필드 를 정의 합 니 다.
import java.util.Date;
import java.util.List;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
*
* @author yinjihuan
*
*/
@Document(collection = "article_info")
public class Article {
@Id
private String id;
@Field("title")
private String title;
@Field("url")
private String url;
@Field("author")
private String author;
@Field("tags")
private List<String> tags;
@Field("visit_count")
private Long visitCount;
@Field("add_time")
private Date addTime;
// get set
}
실체 클래스 의 주 해 는 다음 과 같다.1.Document 주해 표 지 는 하나의 문서 로 my sql 의 표 와 같 습 니 다.collection 값 은 mongodb 에서 집합 한 이름 을 표시 하고 기본 값 은 실체 이름 article 이 라 고 쓰 지 않 습 니 다.
2.Id 주 해 를 주 키 표식 으로 한다
3.Field 주 해 는 필드 표지 이 고 지정 값 은 필드 이름 입 니 다.여기 에는 작은 기술 이 있 습 니 다.모든 spring-data.mongodb 에 이러한 주 해 는 사용자 가 필드 이름 을 사용자 정의 할 수 있 도록 실체 류 와 일치 하지 않 을 수 있 습 니 다.그리고 장점 은 줄 임 말 을 사용 할 수 있 습 니 다.예 를 들 어 username 보다 unane 또는 un 으로 설정 할 수 있 습 니 다.이러한 장점 은 저장 공간 을 절약 하 는 것 입 니 다.mongodb 의 저장 방식 은 key value 형식 으로 모든 key 는 중복 저장 되 고 key 는 사실은 큰 저장 공간 을 차지한다.
다음은 데이터 베 이 스 를 조작 할 수 있 습 니 다.이어서 지난번 에는 테스트 클래스 에 코드 를 쓸 수 있 습 니 다.
@Autowired
private MongoTemplate mongoTemplate;
/**
*
* @author yinjihuan
*/
public static void initArticle() {
//
for (int i = 0; i < 10; i++) {
Article article = new Article();
article.setTitle("MongoTemplate ");
article.setAuthor("yinjihuan");
article.setUrl("http://cxytiandi.com/blog/detail/" + i);
article.setTags(Arrays.asList("java", "mongodb", "spring"));
article.setVisitCount(0L);
article.setAddTime(new Date());
mongoTemplate.save(article);
}
//
List<Article> articles = new ArrayList<>(10);
for (int i = 0; i < 10; i++) {
Article article = new Article();
article.setTitle("MongoTemplate ");
article.setAuthor("yinjihuan");
article.setUrl("http://cxytiandi.com/blog/detail/" + i);
article.setTags(Arrays.asList("java", "mongodb", "spring"));
article.setVisitCount(0L);
article.setAddTime(new Date());
articles.add(article);
}
mongoTemplate.insert(articles, Article.class);
}
데이터 양 이 많은 상황 에서 대량으로 추가 하면 성능 이 더욱 좋 습 니 다.삭제 작업
// author yinjihuan
Query query = Query.query(Criteria.where("author").is("yinjihuan"));
mongoTemplate.remove(query, Article.class);
// , article_info
query = Query.query(Criteria.where("author").is("yinjihuan"));
mongoTemplate.remove(query, "article_info");
// , ,
mongoTemplate.dropCollection(Article.class);
mongoTemplate.dropCollection("article_info");
//
mongoTemplate.getDb().dropDatabase();
다음 두 가 지 는 삭 제 된 데이터 가 어떤 장면 이 있 는 지 알 아야 한다.예 를 들 어 삭 제 된 기록 을 기록 하 는 것 이다.
// , ,
query = Query.query(Criteria.where("author").is("yinjihuan"));
Article article = mongoTemplate.findAndRemove(query, Article.class);
// ,
query = Query.query(Criteria.where("author").is("yinjihuan"));
List<Article> articles = mongoTemplate.findAllAndRemove(query, Article.class);
조작 을 수정 하 다우선 수정 할 데 이 터 를 초기 화 합 니 다.
{
"_id": ObjectId("57c43caed4c63d7e39b5dc48"),
"title": "MongoTemplate ",
"url": "http://cxytiandi.com/blog/detail/0",
"author": "yinjihuan",
"tags": [
"java",
"mongodb",
"spring"
],
"visit_count": 0,
"add_time": ISODate("2016-08-29T13:46:21.881Z")
}
{
"_id": ObjectId("57c43caed4c63d7e39b5dc49"),
"title": "MongoTemplate ",
"url": "http://cxytiandi.com/blog/detail/1",
"author": "yinjihuan",
"tags": [
"java",
"mongodb",
"spring"
],
"visit_count": 0,
"add_time": ISODate("2016-08-29T13:46:22.201Z")
}
// author yinjihuan title visitCount
Query query = Query.query(Criteria.where("author").is("yinjihuan"));
Update update = Update.update("title", "MongoTemplate").set("visitCount", 10);
mongoTemplate.updateFirst(query, update, Article.class);
수정 후 결 과 는 다음 과 같 습 니 다.첫 번 째 데이터 의 title 과 visit 를 발견 할 수 있 습 니 다.count 가 수정 되 었 습 니 다.
{
"_id": ObjectId("57c43caed4c63d7e39b5dc48"),
"title": "MongoTemplate",
"url": "http://cxytiandi.com/blog/detail/0",
"author": "yinjihuan",
"tags": [
"java",
"mongodb",
"spring"
],
"visit_count": 10,
"add_time": ISODate("2016-08-29T13:46:21.881Z")
}
{
"_id": ObjectId("57c43caed4c63d7e39b5dc49"),
"title": "MongoTemplate ",
"url": "http://cxytiandi.com/blog/detail/1",
"author": "yinjihuan",
"tags": [
"java",
"mongodb",
"spring"
],
"visit_count": 0,
"add_time": ISODate("2016-08-29T13:46:22.201Z")
}
//
query = Query.query(Criteria.where("author").is("yinjihuan"));
update = Update.update("title", "MongoTemplate").set("visitCount", 10);
mongoTemplate.updateMulti(query, update, Article.class);
수정 후 결 과 는 다음 과 같 습 니 다.모든 데이터 의 title 과 visit 를 발견 할 수 있 습 니 다.count 가 수정 되 었 습 니 다.
{
"_id": ObjectId("57c43caed4c63d7e39b5dc48"),
"title": "MongoTemplate",
"url": "http://cxytiandi.com/blog/detail/0",
"author": "yinjihuan",
"tags": [
"java",
"mongodb",
"spring"
],
"visit_count": 10,
"add_time": ISODate("2016-08-29T13:46:21.881Z")
}
{
"_id": ObjectId("57c43caed4c63d7e39b5dc49"),
"title": "MongoTemplate",
"url": "http://cxytiandi.com/blog/detail/1",
"author": "yinjihuan",
"tags": [
"java",
"mongodb",
"spring"
],
"visit_count": 10,
"add_time": ISODate("2016-08-29T13:46:22.201Z")
}
// , author jason , author jason
// , , 。
query = Query.query(Criteria.where("author").is("jason"));
update = Update.update("title", "MongoTemplate").set("visitCount", 10);
mongoTemplate.upsert(query, update, Article.class);
수정 후 결 과 는 다음 과 같 습 니 다.우 리 는 새로운 데 이 터 를 발견 할 수 있 습 니 다.
{
"_id": ObjectId("57c43caed4c63d7e39b5dc48"),
"title": "MongoTemplate",
"url": "http://cxytiandi.com/blog/detail/0",
"author": "yinjihuan",
"tags": [
"java",
"mongodb",
"spring"
],
"visit_count": 10,
"add_time": ISODate("2016-08-29T13:46:21.881Z")
}
{
"_id": ObjectId("57c43caed4c63d7e39b5dc49"),
"title": "MongoTemplate",
"url": "http://cxytiandi.com/blog/detail/1",
"author": "yinjihuan",
"tags": [
"java",
"mongodb",
"spring"
],
"visit_count": 10,
"add_time": ISODate("2016-08-29T13:46:22.201Z")
}
{
"_id": ObjectId("57c6e1601e4735b2c306cdb7"),
"author": "jason",
"title": "MongoTemplate",
"visit_count": 10
}
// , , set key key
query = Query.query(Criteria.where("author").is("jason"));
update = Update.update("title", "MongoTemplate").set("money", 100);
mongoTemplate.updateMulti(query, update, Article.class);
수정 후 결 과 는 다음 과 같 습 니 다.우 리 는 키 를 새로 추가 한 것 을 발견 할 수 있 습 니 다.
{
"_id": ObjectId("57c6e1601e4735b2c306cdb7"),
"author": "jason",
"title": "MongoTemplate",
"visit_count": 10,
"money":100
}
//update inc , money 100
query = Query.query(Criteria.where("author").is("jason"));
update = Update.update("title", "MongoTemplate").inc("money", 100);
mongoTemplate.updateMulti(query, update, Article.class);
수정 후 결 과 는 다음 과 같 습 니 다.우 리 는 Money 가 200 이 되 는 것 을 발견 할 수 있 습 니 다.
{
"_id": ObjectId("57c6e1601e4735b2c306cdb7"),
"author": "jason",
"title": "MongoTemplate",
"visit_count": 10,
"money":200
}
//update rename key
query = Query.query(Criteria.where("author").is("jason"));
update = Update.update("title", "MongoTemplate").rename("visitCount", "vc");
mongoTemplate.updateMulti(query, update, Article.class);
{
"_id": ObjectId("57c6e1601e4735b2c306cdb7"),
"author": "jason",
"title": "MongoTemplate",
"vc": 10,
"money":200
}
//update unset key
query = Query.query(Criteria.where("author").is("jason"));
update = Update.update("title", "MongoTemplate").unset("vc");
mongoTemplate.updateMulti(query, update, Article.class);
수정 후 결 과 는 다음 과 같 습 니 다.vc 라 는 key 가 삭 제 된 것 을 발견 할 수 있 습 니 다.
{
"_id": ObjectId("57c6e1601e4735b2c306cdb7"),
"author": "jason",
"title": "MongoTemplate",
"money":200
}
//update pull tags java
query = Query.query(Criteria.where("author").is("yinjihuan"));
update = Update.update("title", "MongoTemplate").pull("tags", "java");
mongoTemplate.updateMulti(query, update, Article.class);
수정 후 결 과 는 다음 과 같 습 니 다.tags 의 자바 가 삭 제 된 것 을 발견 할 수 있 습 니 다.
{
"_id": ObjectId("57c43caed4c63d7e39b5dc48"),
"title": "MongoTemplate",
"url": "http://cxytiandi.com/blog/detail/0",
"author": "yinjihuan",
"tags": [
"mongodb",
"spring"
],
"visit_count": 10,
"add_time": ISODate("2016-08-29T13:46:21.881Z")
}
{
"_id": ObjectId("57c43caed4c63d7e39b5dc49"),
"title": "MongoTemplate",
"url": "http://cxytiandi.com/blog/detail/1",
"author": "yinjihuan",
"tags": [
"mongodb",
"spring"
],
"visit_count": 10,
"add_time": ISODate("2016-08-29T13:46:22.201Z")
}
조회 조작조회,관계 형 데이터 베이스 든 mongodb 와 같은 nosql 이 든 모두 비교적 많이 사용 되 고 대부분 작업 은 읽 는 작업 입 니 다.
mongodb 의 조회 방식 은 여러 가지 가 있 습 니 다.아래 에 자주 사용 하 는 것 만 열거 되 어 있 습 니 다.예 를 들 어:
1.=조회
2.퍼 지 조회
3.범위 이하 조회
4.in 조회
5.or 조회
6.하나 조회,전부 조회
7.스스로 천천히 공부 하기...
작성 자가 조건 에 맞 는 모든 데 이 터 를 조회 하여 List 로 돌아 갑 니 다.
Query query = Query.query(Criteria.where("author").is("yinjihuan"));
List<Article> articles = mongoTemplate.find(query, Article.class);
조건 에 맞 는 첫 번 째 데이터 만 조회 하고 Article 대상 으로 돌아 갑 니 다.
query = Query.query(Criteria.where("author").is("yinjihuan"));
Article article = mongoTemplate.findOne(query, Article.class);
집합 중의 모든 데 이 터 를 조회 하고 조건 을 추가 하지 않 습 니 다.
articles = mongoTemplate.findAll(Article.class);
조건 에 맞 는 수량 조회
query = Query.query(Criteria.where("author").is("yinjihuan"));
long count = mongoTemplate.count(query, Article.class);
홈 키 ID 조회
article = mongoTemplate.findById(new ObjectId("57c6e1601e4735b2c306cdb7"), Article.class);
검색
List<String> authors = Arrays.asList("yinjihuan", "jason");
query = Query.query(Criteria.where("author").in(authors));
articles = mongoTemplate.find(query, Article.class);
ne(!=)조회 하 다.
query = Query.query(Criteria.where("author").ne("yinjihuan"));
articles = mongoTemplate.find(query, Article.class);
lt(<)조회 방 문 량 이 10 보다 적은 글
query = Query.query(Criteria.where("visitCount").lt(10));
articles = mongoTemplate.find(query, Article.class);
범위 조회,5 이상 10 이하
query = Query.query(Criteria.where("visitCount").gt(5).lt(10));
articles = mongoTemplate.find(query, Article.class);
모호 조회,author 에 a 가 포 함 된 데이터
query = Query.query(Criteria.where("author").regex("a"));
articles = mongoTemplate.find(query, Article.class);
배열 조회,tags 의 수량 이 3 인 데 이 터 를 조회 합 니 다.
query = Query.query(Criteria.where("tags").size(3));
articles = mongoTemplate.find(query, Article.class);
or author=jason 또는 visitCount=0 의 데 이 터 를 조회 합 니 다.
query = Query.query(Criteria.where("").orOperator(
Criteria.where("author").is("jason"),
Criteria.where("visitCount").is(0)));
articles = mongoTemplate.find(query, Article.class);
총결산Spring Boot 에서 Mongodb 를 어떻게 빠르게 조작 하 는 지 에 관 한 글 은 여기까지 입 니 다.더 많은 SpringBoot 작업 Mongodb 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.