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