Docs Menu
Docs Home
/ /

문서 교체

이 가이드 에서는 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 매뉴얼의 고유 인덱스 를 참조하세요.

돌아가기

업서트

이 페이지의 내용