문서 교체
개요
이 가이드 에서는 Java Reactive Streams 운전자 를 사용하여 바꾸기 작업 을 수행하여 MongoDB 컬렉션 의 문서 를 바꾸는 방법을 학습 수 있습니다.
바꾸기 작업은 MongoDB 컬렉션 의 문서 하나를 지정한 새 필드와 값으로 바꿉니다. replaceOne()
메서드를 사용하여 바꾸기 작업을 수행할 수 있습니다.
샘플 데이터
이 가이드의 예시에서는 Atlas liveMigrations 링크 삭제의 sample_restaurants.restaurants
컬렉션을 사용합니다.
무료 MongoDB Atlas cluster 를 생성하고 샘플 데이터 세트를 로드하는 방법을 학습 보려면 시작하기 튜토리얼을 참조하세요.
중요
프로젝트 리액터 라이브러리
이 가이드 에서는 Project Reactor 라이브러리를 Publisher
사용하여 Java Reactive Streams 운전자 메서드에서 반환된 인스턴스를 사용합니다. 프로젝트 Reactor 라이브러리와 사용 방법에 학습 보려면 Reactor 문서에서 시작하기 를 참조하세요. 이 가이드 에서 Project Reactor 라이브러리 메서드를 사용하는 방법에 학습 보려면 MongoDB 에 데이터 쓰기 가이드 를 참조하세요.
대체 작업
MongoCollection
인스턴스 에서 replaceOne()
메서드를 사용하여 바꾸기 작업을 수행할 수 있습니다. 이 메서드는 검색 기준과 일치하는 첫 번째 문서 에서 _id
필드 를 제외한 모든 필드를 제거한 다음 지정한 필드와 값을 빈 문서 에 추가합니다.
필수 매개변수
이 replaceOne()
메서드에는 다음 매개 변수가 필요합니다.
쿼리 필터하다 문서 는 대체할 문서를 결정합니다.
쿼리 필터에 대한 자세한 내용은 쿼리 지정 가이드 를 참조하세요.
문서바꾸기 는 새 문서 에 삽입할 필드와 값을 지정합니다.
바꾸기 예시
MongoDB 컬렉션 의 단일 문서 를 바꾸려면 replaceOne()
메서드를 호출하고 쿼리 필터하다 문서 와 문서 바꾸기를 매개변수로 전달합니다. 그런 다음 replaceOne()
결과를 Mono
의 정적 Mono.from()
메서드에 전달합니다. Mono
는 Project Reactor 라이브러리의 클래스입니다. Java Reactive Streams에서 운전자 메서드는 콜드 Publisher
인스턴스를 반환하며, 이는 반환된 Publisher
을(를) 구독 하지 않는 한 해당 작업이 발생하지 않음을 의미합니다. 이 가이드 에서는 Project Reactor 라이브러리를 사용하여 이를 사용합니다. 에 학습 보려면 Mono 를 참조하세요. Project Reactor 문서에서 확인 가능합니다.Mono
다음 예시 에서는 replaceOne()
메서드를 사용하여 문서 의 필드와 값을 name
필드 값 "Pizza Town"
로 바꿉니다. replaceOne()
메서드는 원본 문서 를 name
필드 값이 "Mongo's Pizza"
이고 cuisine
필드 값이 "Pizza"
인 문서 로 대체합니다.
Publisher<UpdateResult> replacePublisher = restaurants.replaceOne( eq("name", "Pizza Town"), new Document().append("name", "Mongo's Pizza") .append("cuisine", "Pizza")); Mono.from(replacePublisher).block();
바꾸기 동작 수정
옵션 메서드를 호출하여 replaceOne()
메서드의 동작을 선택적으로 수정할 수 있습니다. ReplaceOptions
클래스는 replaceOne()
메서드의 동작을 수정하는 메서드를 제공합니다. ReplaceOptions
클래스를 사용하려면 클래스의 새 인스턴스 를 구성한 다음 해당 메서드 중 하나 이상을 호출하여 바꾸기 작업을 수정합니다. 이러한 메서드 호출을 함께 연결할 수 있습니다. 대체 작업의 동작을 수정하려면 클래스 인스턴스 와 연결된 메서드 호출을 replaceOne()
메서드의 마지막 인수로 전달합니다.
ReplaceOptions
클래스에서 다음 메서드를 사용하여 replaceOne()
메서드를 수정할 수 있습니다.
메서드 | 설명 |
---|---|
bypassDocumentValidation(Boolean bypass) | Specifies whether the replace operation bypasses document validation. This lets you
update documents that don't meet the schema validation requirements, if any
exist. For more information about schema validation, see Schema
Validation in the MongoDB
Server manual. |
collation(Collation collation) | Specifies the kind of language collation to use when sorting
results. For more information, see Collation
in the MongoDB Server manual. |
comment(BsonValue comment) | Attaches a BsonValue comment to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. |
comment(String comment) | Attaches a String comment to the operation. For more information, see the insert command
fields guide in the
MongoDB Server manual. |
hint(Bson hint) | Sets the index for the operation as a Bson value.
For more information, see the hint statement
in the MongoDB Server manual. |
hintString(String hint) | Sets the index for the operation as a String value.
For more information, see the hint statement
in the MongoDB Server manual. |
let(Bson variables) | Specifies a map of parameter names and values. Values must be constant or closed
expressions that don't reference document fields. For more information,
see the let statement in the
MongoDB Server manual. |
upsert(Boolean upsert) | Specifies whether the replace operation performs an upsert operation if no
documents match the query filter. For more information, see the upsert
statement
in the MongoDB Server manual. |
수정 바꾸기 예제
다음 코드는 replaceOne()
메서드를 사용하여 restaurants
컬렉션 의 문서 를 대체합니다. 또한 upsert(true)
옵션을 설정하여 쿼리 필터하다 가 기존 문서와 일치하지 않는 경우 운전자 가 새 문서 를 삽입하도록 합니다.
Publisher<UpdateResult> replacePublisher = restaurants.replaceOne( eq("name", "Food Town"), new Document().append("name", "Food World") .append("cuisine", "Mixed"), new ReplaceOptions().upsert(true)); Mono.from(replacePublisher).block();
반환 값
replaceOne()
메서드는 UpdateResult
객체 를 반환합니다. UpdateResult
유형에서 다음 메서드를 사용하여 해당 정보에 액세스 합니다.
속성 | 설명 |
---|---|
getMatchedCount() | The number of documents that matched the query filter, regardless of
how many were replaced. |
getModifiedCount() | The number of documents modified by the replace operation. If a replaced
document is identical to the original, it is not included in this
count. |
getUpsertedId() | The ID of the document that was inserted into the database, if the driver
performed an upsert. If no document was inserted, this value is null . |
wasAcknowledged() | An acknowledgement of the replacement. |
추가 정보
문서를 Java Reactive Streams 운전자 로 바꾸는 실행 가능한 코드 예제는 MongoDB 에 데이터 쓰기 가이드 를 참조하세요.
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.