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

$setOnInsert

이 페이지의 내용

  • 정의
  • 행동
  • 예시
$setOnInsert

upsert: true를 사용한 업데이트 작업으로 인해 문서가 삽입되면 $setOnInsert는 문서의 필드에 지정된 값을 할당합니다. 업데이트 작업으로 인해 삽입이 발생하지 않으면 $setOnInsert는 아무 작업도 수행하지 않습니다.

다음에 upsert 옵션을 지정할 수 있습니다.

db.collection.updateOne(
<query>,
{ $setOnInsert: { <field1>: <value1>, ... } },
{ upsert: true }
)

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

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

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

products collection에 문서가 없습니다.

upsert:true 매개변수인 db.collection.updateOne()를 사용하여 새 문서를 삽입합니다.

db.products.updateOne(
{ _id: 1 },
{
$set: { item: "apple" },
$setOnInsert: { defaultQty: 100 }
},
{ upsert: true }
)

MongoDB는 <query>를 사용하여 _id: 1로 새 문서를 생성합니다. $setOnInsert는 지정된 대로 문서를 업데이트합니다.

products collection에 새로 삽입된 문서가 포함되어 있습니다.

{ "_id" : 1, "item" : "apple", "defaultQty" : 100 }

upsert 매개 변수가 true 인 경우db.collection.updateOne():

  • 새 문서를 생성합니다.

  • $set 연산을 적용합니다.

  • $setOnInsert 연산을 적용합니다.

db.collection.updateOne()가 기존 문서와 일치하는 경우 MongoDB는 작업만 $set 적용합니다.

다음도 참조하세요.

돌아가기

$set

이 페이지의 내용