Docs Menu
Docs Home
/ / /
Java Reactive Streams 드라이버
/

문서 삽입

이 페이지의 내용

  • 개요
  • 샘플 데이터
  • 0}_id 필드
  • 문서 하나 삽입
  • 여러 문서를 삽입합니다.
  • 삽입 동작 수정
  • 예시
  • 추가 정보
  • API 문서

이 가이드 에서는 Java Reactive Streams 운전자 를 사용하여 삽입 작업을 수행하여 MongoDB 컬렉션 에 문서를 추가하는 방법을 학습 수 있습니다.

삽입 작업은 하나 이상의 문서를 MongoDB 컬렉션 에 삽입합니다. insertOne() 또는 insertMany() 메서드를 사용하여 삽입 작업을 수행할 수 있습니다.

이 가이드의 예시에서는 Atlas liveMigrations 링크 삭제sample_restaurants.restaurants 컬렉션을 사용합니다.

무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 시작하기 튜토리얼을 참조하세요.

중요

프로젝트 리액터 라이브러리

이 가이드 에서는 Project Reactor 라이브러리를 Publisher 사용하여 Java Reactive Streams 운전자 메서드에서 반환된 인스턴스를 사용합니다. 프로젝트 Reactor 라이브러리와 사용 방법에 학습 보려면 Reactor 문서에서 시작하기 를 참조하세요. 이 가이드 에서 Project Reactor 라이브러리 메서드를 사용하는 방법에 학습 보려면 MongoDB 에 데이터 쓰기 가이드 를 참조하세요.

MongoDB 컬렉션에서 각 문서에는 고유한 필드 값이 있는 _id 필드가 포함되어야 합니다.

MongoDB를 사용하면 이 필드를 두 가지 방법으로 관리할 수 있습니다.

  • _id 필드 값이 고유하도록 각 문서에 대해 이 필드를 직접 설정할 수 있습니다.

  • 드라이버가 각 문서 _id 에 대해 고유한 ObjectId 값을 자동으로 생성하도록 할 수 있습니다. 문서에 대해 _id 값을 수동으로 설정하지 않으면 드라이버가 필드를 ObjectId 으로 채웁니다.

고유성을 보장할 수 없는 경우 드라이버가 _id 값을 자동으로 생성하도록 하는 것이 좋습니다.

참고

중복된 _id 값이 고유 인덱스 제약 조건을 위반하면 드라이버가 insertOne()에서 WriteError을 반환하거나 insertMany()에서 BulkWriteError을 반환합니다.

_id 필드에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 고유 인덱스 가이드를 참조하세요.

문서 구조 및 규칙에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 문서 가이드를 참조하세요.

MongoDB 컬렉션 에 단일 문서 를 추가하려면 insertOne() 메서드를 호출하고 추가하려는 문서 를 전달합니다. 그런 다음 insertOne() 결과를 Mono 의 정적 Mono.from() 메서드에 전달합니다. Mono 는 Project Reactor 라이브러리의 클래스입니다. Java Reactive Streams에서 운전자 메서드는 콜드 Publisher 인스턴스를 반환하며, 이는 반환된 Publisher 을(를) 구독 하지 않는 한 해당 작업이 발생하지 않음을 의미합니다. 이 가이드 에서는 Project Reactor 라이브러리를 사용하여 이를 사용합니다. 에 학습 보려면 Mono 를 참조하세요. Project Reactor 문서에서 확인 가능합니다.Mono

다음 예시 에서는 insertOne() 메서드를 사용하여 name 값이 "Mongo's Burgers" 인 문서 를 restaurants 컬렉션 에 삽입합니다.

Document document = new Document("name", "Mongo's Burgers");
Publisher<InsertOneResult> insertPublisher = restaurants.insertOne(document);
Mono.from(insertPublisher).block();

MongoDB 컬렉션 에 여러 문서를 추가하려면 insertMany() 메서드를 호출하고 추가하려는 문서 목록을 전달합니다. 그런 다음 insertMany() 결과를 Mono 의 정적 Mono.from() 메서드에 전달합니다. Mono 는 Project Reactor 라이브러리의 클래스입니다. Java Reactive Streams에서 운전자 메서드는 콜드 Publisher 인스턴스를 반환하며, 이는 반환된 Publisher 을(를) 구독 하지 않는 한 해당 작업이 발생하지 않음을 의미합니다. 이 가이드 에서는 Project Reactor 라이브러리를 사용하여 이를 사용합니다. 에 학습 보려면 Mono 를 참조하세요. Project Reactor 문서에서 확인 가능합니다.Mono

다음 예시 에서는 insertMany() 메서드를 사용하여 restaurants 컬렉션 에 문서 목록을 삽입합니다.

Document doc1 = new Document("name", "Mongo's Pizza");
Document doc2 = new Document("name", "Mongo's Coffee");
List<Document> documents = Arrays.asList(doc1, doc2);
Publisher<InsertManyResult> insertPublisher = restaurants.insertMany(documents);
Mono.from(insertPublisher).block();

InsertOneOptions 클래스에는 insertOne() 메서드의 동작을 수정하는 메서드가 포함되어 있습니다. InsertOneOptions 클래스를 사용하려면 클래스의 새 인스턴스 를 구성한 다음 해당 메서드 중 하나 이상을 호출하여 삽입 작업을 수정합니다. 이러한 메서드 호출을 함께 연결할 수 있습니다. 삽입 작업의 동작을 수정하려면 클래스 인스턴스 와 연결된 메서드 호출을 insertOne() 메서드의 두 번째 인수로 전달합니다.

InsertManyOptions 클래스를 사용하여 insertMany() 메서드를 비슷하게 수정할 수 있습니다.

InsertOneOptions 클래스에서 다음 메서드를 사용하여 insertOne() 메서드를 수정할 수 있습니다. 모든 메서드는 선택 사항입니다.

메서드
설명
bypassDocumentValidation (Boolean bypassDocumentValidation)
If set to True, allows the write to opt out of document-level validation.
Defaults to False.
toString()
If used, returns a string representation of the object.
comment(BsonValue comment)
A comment to attach to the operation. For more information, see the insert command fields guide in the MongoDB Server manual.

InsertManyOptions 클래스에는 이전 메서드와 다음 ordered() 메서드가 포함되어 있습니다.

메서드
설명
ordered(Boolean ordered)
If set to True, the driver sends documents to the server in the order provided. If an error occurs, the driver and server cancel all remaining insert operations.
Defaults to True.

다음 코드는 insertMany() 메서드를 사용하여 restaurants 컬렉션 에 새 문서를 삽입합니다. 또한 bypassDocumentValidation(true) 옵션을 설정하여 문서 수준 유효성 검사 를 우회합니다.

Document doc1 = new Document("name", "Mongo's Burgers");
Document doc2 = new Document("name", "Mongo's Pizza");
Document doc3 = new Document("name", "Mongo's Coffee");
List<Document> documents = Arrays.asList(doc1, doc2, doc3);
Publisher<InsertManyResult> insertPublisher =
restaurants.insertMany(documents,
new InsertManyOptions().bypassDocumentValidation(true));
Mono.from(insertPublisher).block();

Java Reactive Streams 운전자 를 사용하여 문서를 삽입하는 실행 가능한 코드 예제는 MongoDB 에 데이터 쓰기 가이드 를 참조하세요.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.

돌아가기

데이터 쓰기