문서 홈 → 애플리케이션 개발 → MongoDB 드라이버 → Node.js 드라이버
문서 수정
개요
업데이트 및 대체 작업을 사용하여 MongoDB 컬렉션의 문서를 수정할 수 있습니다. 업데이트 작업은 그 밖의 필드와 값을 변경하지 않고 유지하면서 문서의 필드와 값을 수정합니다. 대체 작업은 _id
필드 값을 변경하지 않고 기존 문서의 모든 필드와 값을 지정된 필드 및 값으로 대체합니다.
Node.js 드라이버는 다음과 같은 방법을 제공하여 문서를 변경하합니다.
updateOne()
updateMany()
replaceOne()
팁
인터랙티브 랩
이 페이지에는 updateMany()
메서드를 사용하여 데이터를 수정하는 방법을 보여주는 짧은 대화형 랩이 포함되어 있습니다. MongoDB 또는 코드 편집기를 설치하지 않고도 브라우저 창에서 직접 이 실습을 완료할 수 있습니다.
실습을 시작하려면 페이지 상단의 Open Interactive Tutorial 버튼을 클릭하세요. 실습을 전체 화면 형식으로 확장하려면 실습 창의 오른쪽 상단에 있는 전체 화면 버튼(⛶)을 클릭합니다.
문서 업데이트
하나 이상의 문서를 업데이트하려면 업데이트 연산자 (수행할 업데이트 유형)와 변경 내용을 설명하는 필드 및 값을 지정하는 업데이트 문서를 만듭니다. 업데이트 문서는 다음과 같은 포맷을 사용합니다.
{ <update operator>: { <field> : { ... }, <field> : { } }, <update operator>: { ... } }
업데이트 문서의 최상위 수준에는 다음과 같은 업데이트 연산자 중 하나 이상이 있습니다.
$set
즉, 필드 값을 지정된 값으로 바꿉니다.$inc
즉, 필드 값을 증가 또는 감소시킵니다.$rename
즉, 필드 이름을 바꿉니다.$unset
즉, 필드를 제거합니다.$mul
즉, 필드 값에 지정된 숫자를 곱합니다.
업데이트 연산자 및 사용법에 대한 전체 목록은 MongoDB Server 매뉴얼을 참조하세요.
업데이트 연산자는 업데이트 문서에서 이와 관련된 필드에만 적용됩니다.
참고
업데이트 작업의 애그리게이션 파이프라인
MongoDB 버전 4 를 사용하는 경우.2 이상에서는 업데이트 작업에서 집계 단계의 하위 집합으로 구성된 집계 파이프라인을 사용할 수 있습니다. 업데이트 작업에 사용되는 집계 파이프라인에서 MongoDB가 지원하는 애그리게이션 단계에 대한 자세한 내용은 집계 파이프라인으로 업데이트 빌드에 대한 튜토리얼을 참조하세요 .
예제
판매할 항목, 가격, 사용 가능한 수량을 설명하는 필드가 있는 myDB.items
컬렉션의 문서를 감안합니다.
{ _id: 465, item: "Hand-thrown ceramic plate", price: 32.50, quantity: 7, }
quantity
의 새 값으로 $set
업데이트 연산자를 적용하는 경우 다음과 같은 업데이트 문서를 사용할 수 있습니다.
const myDB = client.db("myDB"); const myColl = myDB.collection("items"); const filter = { _id: 465 }; // update the value of the 'quantity' field to 5 const updateDocument = { $set: { quantity: 5, }, }; const result = await myColl.updateOne(filter, updateDocument);
업데이트된 문서는 다음과 유사하며, quantity
필드 값이 업데이트되고 그 밖의 모든 값은 변경되지 않습니다.
{ _id: 465, item: "Hand-thrown ceramic plate", price: 32.50, quantity: 5, }
업데이트 작업이 컬렉션의 문서와 일치하지 않는 경우 변경되지 않습니다. 업데이트 작업을 구성하여 업데이트하려고 시도하지만 일치하는 문서가 없는 경우 지정된 필드와 값으로 새 문서를 삽입하는 업서트를 수행하도록 설정할 수 있습니다.
문서의 _id
필드를 수정하거나 고유 인덱스 제약 조건을 위반하는 값으로 필드를 변경할 수 없습니다. 고유 인덱스에 대한 자세한 내용은 MongoDB Server 매뉴얼을 참조하세요.
문서 교체하기
대체 작업을 수행하려면 대체 작업에 사용할 필드와 값으로 구성된 대체 문서 를 만듭니다. 대체 문서는 다음 형식을 사용합니다.
{ <field>: { <value> }, <field>: { ... } }
대체 문서란 쿼리 필터와 일치하는 기존 문서를 대체하려는 문서를 말합니다.
예제
판매할 항목, 가격, 사용 가능한 수량을 설명하는 필드가 있는 myDB.items
컬렉션의 문서를 감안합니다.
{ _id: 501, item: "3-wick beeswax candle", price: 18.99, quantity: 10, }
이 문서를 완전히 다른 항목에 대한 설명이 포함된 문서로 대체하려고 한다고 가정해 보겠습니다. 대체 작업은 다음과 같이 유사할 수 있습니다.
const myDB = client.db("myDB"); const myColl = myDB.collection("items"); const filter = { _id: 501 }; // replace the matched document with the replacement document const replacementDocument = { item: "Vintage silver flatware set", price: 79.15, quantity: 1, }; const result = await myColl.replaceOne(filter, replacementDocument);
대체된 문서에는 다음과 같이 대체 문서의 내용과 변경할 수 없는 _id
필드 등이 있습니다.
{ _id: 501, item: "Vintage silver flatware set", price: 79.15, quantity: 1, }
대체 작업이 컬렉션의 문서와 일치하지 않는 경우 변경되지 않습니다. 대체를 시도하는 업서트 를 수행하도록 대체 작업을 구성할 수 있지만 일치하는 문서가 없는 경우 지정된 필드와 값이 포함된 새 문서를 삽입합니다.
문서의 _id
필드를 수정하거나 고유 인덱스 제약 조건을 위반하는 값으로 필드를 변경할 수 없습니다. 고유 인덱스에 대한 자세한 내용은 MongoDB Server 매뉴얼을 참조하세요.