MongoDB 예제가 포함된 Update() 문서
\
⚡ 스마트 요약
MongoDB update() 메서드는 컬렉션의 기존 레코드를 수정하는 문서 작업입니다. update() 메서드는 문서를 선택하기 위한 조건과 필드 값을 변경하기 위한 $set과 같은 수정자를 인수로 받으며, multi 옵션을 사용하면 일치하는 여러 문서를 한 번에 업데이트할 수 있습니다.

기본 문서 업데이트
MongoDB 컬렉션의 문서를 업데이트하는 update() 명령을 제공합니다. 업데이트하려는 문서만 업데이트하려면 선택한 문서만 업데이트되도록 업데이트 문에 기준을 추가할 수 있습니다.
명령의 기본 매개변수는 문서를 업데이트해야 하는 조건이고, 다음은 수행해야 할 수정 사항입니다.
다음 예는 이것이 어떻게 이루어지는지 보여줍니다.
단계 1) 업데이트 명령을 실행하세요.
단계 2) 업데이트해야 하는 문서를 결정하는 데 사용할 조건을 선택합니다. 이 예에서는 직원 ID가 22인 문서를 업데이트하려고 합니다.
단계 3) 필드 이름을 수정하려면 set 명령을 사용하십시오.
단계 4) 수정하려는 필드 이름을 선택하고 그에 따라 새 값을 입력하십시오.
db.Employee.update( {"Employeeid" : 1}, {$set: { "EmployeeName" : "NewMartin"}});
명령이 성공적으로 실행되면 다음 출력이 표시됩니다.
출력:
출력에는 하나의 레코드가 조건과 일치하여 관련 필드 값이 수정되었음을 명확하게 보여줍니다.
MongoDB 업데이트 Opera토르
`$set` 연산자는 필드를 변경하는 가장 일반적인 방법이지만, MongoDB 다양한 요구 사항에 맞는 여러 업데이트 연산자를 제공합니다. 이러한 연산자는 update() 함수의 두 번째 인수에 $set과 함께 또는 $set 대신 사용할 수 있습니다.
- $세트: 필드 값을 설정하고, 필드가 존재하지 않으면 생성합니다.
- $미설정: 문서에서 특정 필드를 완전히 제거합니다.
- $inc: 숫자 필드 값을 지정된 양만큼 증가시키거나 감소시킵니다.
- $mul: 숫자 필드의 값을 곱합니다.
- $rename: 필드 이름을 새 이름으로 변경합니다.
- $푸시: 배열 필드에 값을 추가합니다.
- $풀: 배열 필드에서 일치하는 값을 제거합니다.
각 연산자는 사용자가 지정한 필드만 대상으로 하며, 문서의 나머지 부분은 변경하지 않습니다. 여러 연산자를 하나의 update() 호출에 결합하여 여러 필드를 한 번에 수정할 수 있으므로, 업데이트의 정확성을 높이고 보존하고자 하는 데이터가 덮어쓰이는 것을 방지할 수 있습니다.
여러 값 업데이트
여러/대량 문서가 동시에 업데이트되도록 하려면 MongoDB 한 번에 하나의 문서만 수정되도록 하려면 다중 옵션을 사용해야 합니다.
다음 예에서는 여러 문서를 업데이트하는 방법을 보여줍니다.
이 예에서는 먼저 직원 ID가 "1"인 문서를 찾고 직원 이름을 "Martin"에서 "NewMartin"으로 변경합니다.
단계 1) 업데이트 명령을 실행하세요.
단계 2) 업데이트해야 하는 문서를 결정하는 데 사용할 조건을 선택합니다. 이 예에서는 직원 ID가 "1"인 문서를 업데이트하려고 합니다.
단계 3) 수정하려는 필드 이름을 선택하고 그에 따라 새 값을 입력하십시오.
db.Employee.update ( { Employeeid : 1 }, { $set : { "EmployeeName" : "NewMartin", "Employeeid" : 22 } } )
명령이 성공적으로 실행되고 다음을 실행하면 "찾기" 직원 ID가 22인 문서를 검색하는 명령을 실행하면 다음과 같은 출력이 표시됩니다.
출력:
출력에는 하나의 레코드가 조건과 일치하여 관련 필드 값이 수정되었음을 명확하게 보여줍니다.
Upsert를 사용하여 문서를 삽입하는 방법 MongoDB
업서트(upsert)는 업데이트와 삽입을 결합한 것입니다. 업서트를 활성화하면, MongoDB 조건에 맞는 문서를 업데이트하거나, 일치하는 문서가 없으면 새 문서를 삽입합니다. 이는 레코드가 이미 존재하는지 확실하지 않을 때 유용합니다.
업데이트(upsert)를 수행하려면 update() 함수의 세 번째 인수로 upsert 옵션을 true로 설정하여 추가하십시오.
db.Employee.update( {Employeeid: 5}, {$set: {EmployeeName: "Sofia"}}, {upsert: true} )
다음과 같이됩니다.
- 직원 ID가 5인 문서가 있는 경우, MongoDB EmployeeName 필드를 업데이트합니다.
- 그러한 문서가 존재하지 않는 경우, MongoDB 직원 ID가 5이고 직원 이름이 "인 새 문서를 삽입합니다.Sofiㅏ".
업서트(Upsert)는 카운터, 설정 및 처음 사용할 때 레코드를 생성하고 나중에 업데이트하려는 모든 워크플로에 유용합니다. 최신 버전에서는 MongoDBupdateOne() 및 updateMany() 메서드에서도 옵션에 {upsert: true}를 전달하면 동일한 동작을 사용할 수 있습니다. 단, 조건을 신중하게 선택해야 합니다. 광범위한 필터와 upsert를 함께 사용하면 예상치 못한 문서가 생성될 수 있습니다.
updateOne() vs updateMany() vs replaceOne()
update() 메서드는 이제 더 이상 사용되지 않는 명령입니다. 최신 버전 MongoDB 드라이버는 동작을 세 가지 명확한 방식으로 구분합니다. 아래 표는 이들을 비교합니다.
| 방법 | 그것이하는 일 | 영향을 받는 문서 |
|---|---|---|
| 업데이트원() | 첫 번째 일치하는 문서에 업데이트 연산자를 적용합니다. | 한 |
| 많은 업데이트() | 일치하는 모든 문서에 업데이트 연산자를 적용합니다. | 많은 |
| replaceOne() | 첫 번째 일치하는 문서 전체를 새 문서로 교체합니다. | 한 |
단일 항목만 변경하려면 updateOne() 메서드를 사용하고, 기존의 multi 옵션 대신 updateMany() 메서드를 사용하며, 필드 편집이 아닌 문서 전체를 교체하려면 replaceOne() 메서드를 사용하세요. 이러한 메서드는 일치하는 문서 수와 수정된 문서 수를 명확하게 보여주는 결과를 반환하므로 update() 메서드보다 안전하고 디버깅하기 쉽습니다.


