Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / / /

$set

이 페이지의 내용

  • 정의
  • 호환성
  • 구문
  • 행동
  • 예시

참고

명확화

다음 페이지는 업데이트 연산자 $set을 참조합니다. 집계 단계에 대해서는 $set을 참조하세요.

$set

$set 연산자는 필드 값을 지정된 값으로 바꿉니다.

다음 환경에서 호스팅되는 배포에 $set 사용할 수 있습니다.

  • MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스

$set 연산자 표현식의 형식은 다음과 같습니다.

{ $set: { <field1>: <value1>, ... } }

내장된 문서나 배열에 <field> 기호를 지정하려면 점 표기법을사용하십시오.

MongoDB 5.0부터 업데이트 연산자는 문자열 기반 이름이 있는 문서 필드를 사전순으로 처리합니다. 숫자 이름이 있는 필드는 숫자 순서대로 처리됩니다. 자세한 내용은 업데이트 운영자 동작을 참조하십시오.

필드가 존재하지 않는 경우 $set는 새 필드가 유형 제약 조건을 위반하지 않는 한 지정된 값으로 새 필드를 추가합니다. 존재하지 않는 필드에 점선 경로를 지정하면 $set필요에 따라 내장된 문서를 생성해 필드에 대한 점선 경로를 채웁니다.

여러 필드-값 쌍을 지정하면 $set이 각 필드를 업데이트하거나 생성합니다.

MongoDB 5.0부터 빈 피연산자 표현식( { } )과 함께 $set과 같은 업데이트 연산자를 사용할 때 mongod에서 더 이상 오류가 발생하지 않습니다. 업데이트가 비어 있으면 변경 사항이 없으며 oplog 항목이 생성되지 않습니다(즉, 작업이 작동하지 않음을 의미합니다).

products 컬렉션을 생성합니다.

db.products.insertOne(
{
_id: 100,
quantity: 250,
instock: true,
reorder: false,
details: { model: "14QQ", make: "Clothes Corp" },
tags: [ "apparel", "clothing" ],
ratings: [ { by: "Customer007", rating: 4 } ]
}
)

_id100과 일치하는 문서의 경우 다음 작업은 $set 연산자를 사용하여 quantity, detailstags 필드의 값을 업데이트합니다.

db.products.updateOne(
{ _id: 100 },
{ $set:
{
quantity: 500,
details: { model: "2600", make: "Fashionaires" },
tags: [ "coats", "outerwear", "clothing" ]
}
}
)

이 작업은 다음을 업데이트합니다.

  • quantity에서 500 사이의 값

  • details 필드에 새 내장된 문서를 추가합니다.

  • tags 필드에 새 배열을 추가합니다.

{
_id: 100,
quantity: 500,
instock: true,
reorder: false,
details: { model: '2600', make: 'Fashionaires' },
tags: [ 'coats', 'outerwear', 'clothing' ],
ratings: [ { by: 'Customer007', rating: 4 } ]
}

내장된 문서나 배열에 <field> 기호를 지정하려면 점 표기법을사용하십시오.

_id100과 일치하는 문서에 대해, 다음 작업은 details 문서의 make 필드를 업데이트 합니다.

db.products.updateOne(
{ _id: 100 },
{ $set: { "details.make": "Kustom Kidz" } }
)

업데이트 후 문서의 값은 다음과 같습니다.

{
_id: 100,
quantity: 500,
instock: true,
reorder: false,
details: { model: '2600', make: 'Kustom Kidz' },
tags: [ 'coats', 'outerwear', 'clothing' ],
ratings: [ { by: 'Customer007', rating: 4 } ]
}

중요

위 코드는 dot notation을 사용하여 내장된 details 문서의 make 필드를 업데이트합니다. 코드 형식은 내장된 details 문서의 다른 필드를 모두 제거하고 내장된 문서 전체를 대체하는 다음의 코드 예시와 유사합니다.

db.products.updateOne(
{ _id: 100 },
{ $set: { details:
{make: "Kustom Kidz"}
}
})

내장된 문서나 배열에 <field> 기호를 지정하려면 점 표기법을사용하십시오.

_id100과 일치하는 문서의 경우, 다음 작업은 tags 필드의 두 번째 요소(배열 인덱스 1) 값과 ratings 배열의 첫 번째 요소(배열 인덱스 0)에 있는 rating 필드를 업데이트합니다.

db.products.updateOne(
{ _id: 100 },
{ $set:
{
"tags.1": "rain gear",
"ratings.0.rating": 2
}
}
)

업데이트 후 문서의 값은 다음과 같습니다.

{
_id: 100,
quantity: 500,
instock: true,
reorder: false,
details: { model: '2600', make: 'Kustom Kidz' },
tags: [ 'coats', 'rain gear', 'clothing' ],
ratings: [ { by: 'Customer007', rating: 2 } ]
}

배열에 대한 추가 업데이트 연산자는 배열 업데이트 연산자를 참조하십시오.

다음도 참조하세요.

돌아가기

$rename

이 페이지의 내용