Docs Menu
Docs Home
/ / /
Java 동기화 드라이버
/

문서 교체

이 가이드 에서는 MongoDB 컬렉션 의 문서를 교체하는 방법을 학습 수 있습니다. 바꾸기 작업은 컬렉션 에서 단일 문서 바꿀 필드와 값을 지정합니다.

대체 작업은 collection에서 하나의 문서를 대체합니다. 대체는 쿼리 필터가 일치하는 문서와 대체 문서 간에 발생합니다.

replaceOne() 메서드는 일치하는 문서의 모든 기존 필드와 값(_id 필드 제외)을 제거하고 이를 대체 문서로 대체합니다.

다음과 같이 MongoCollection 인스턴스에서 replaceOne() 메서드를 호출할 수 있습니다.

collection.replaceOne(<query>, <replacement>);

replaceOne() 메서드에는 다음과 같은 매개변수가 있습니다.

  • query 컬렉션 에서 바꿀 문서 와 일치하는 기준이 포함된 쿼리 필터하다 지정합니다.

  • replacement 일치하는 문서 대체할 새 Document 객체 의 필드와 값을 지정합니다.

  • (선택 사항) replaceOptions 운전자 바꾸기 작업을 수행하는 방법을 사용자 지정하기 위해 설정하다 수 있는 옵션을 지정합니다. 이 유형에 대해 자세히 학습 ReplaceOptions에 대한 API 설명서를 참조하세요.

이 예시 에서 페인트 저장 5가지 색상의 페인트를 판매합니다. paint_inventory 컬렉션 현재 인벤토리를 나타냅니다.

{ "_id": 1, "color": "red", "qty": 5 }
{ "_id": 2, "color": "purple", "qty": 8 }
{ "_id": 3, "color": "yellow", "qty": 0 }
{ "_id": 4, "color": "green", "qty": 6 }
{ "_id": 5, "color": "pink", "qty": 0 }

페인트 매장은 재고를 다시 업데이트해야 함을 인식합니다. 분홍 물감 20개라고 생각했던 것이 실제로는 주황색 물감 25개 캔이 들어 있었습니다.

인벤토리를 업데이트하려면 다음을 지정하여 replaceOne() 메서드를 호출합니다.

  • color 가 '분홍색'인 문서와 일치하는 쿼리 필터

  • color 이 '주황색'이고 qty 이 '25'인 대체 문서입니다.

Bson filter = Filters.eq("color", "pink");
Document document = new Document("color", "orange").append("qty", 25);
// Replaces the first document that matches the filter with a new document
UpdateResult result = collection.replaceOne(filter, document);
// Prints the number of matched and modified documents
System.out.println("Matched document count: " + result.getMatchedCount());
System.out.println("Modified document count: " + result.getModifiedCount());

앞의 코드의 출력은 다음과 유사합니다.

Matched document count: 1
Modified document count: 1

다음은 업데이트된 문서를 보여줍니다.

{ "_id": 5, "color": "orange", "qty": 25 }

여러 문서가 replaceOne() 메서드에 지정된 쿼리 필터하다 와 일치하는 경우 첫 번째 결과를 대체합니다. 다음 코드와 같이 ReplaceOptions 인스턴스 에서 정렬을 지정하여 서버 바꾸기 작업을 수행하기 전에 일치하는 문서에 순서를 적용 할 수 있습니다.

ReplaceOptions options = ReplaceOptions.sort(ascending("qty"));
UpdateResult result = collection.replaceOne(filter, document, options);

바꾸기 작업의 쿼리 필터하다 와 일치하는 문서가 0개인 경우 replaceOne() 은 컬렉션 의 문서를 변경하지 않습니다. 일치하는 문서가 없는 경우 새 문서 학습 하는 대신 업서트 가이드 참조하세요.

중요

replaceOne() 메서드는 컬렉션의 고유 인덱스 제약 조건을 위반하는 문서를 변경할 수 없습니다. 고유 인덱스에 대한 제약 조건에 대한 자세한 내용은 MongoDB Server 매뉴얼의 고유 인덱스 를 참조하세요.

돌아가기

업서트

이 페이지의 내용