문서 메뉴

문서 홈애플리케이션 개발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 매뉴얼을 참조하세요.

← 문서 삭제