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

$rename

이 페이지의 내용

  • 정의
  • 구문
  • 행동
  • 예시
$rename

$rename 연산자는 필드 이름을 업데이트합니다.

{ $rename: { <field1>: <newName1>, <field2>: <newName2>, ... } }

새 필드 이름은 기존 필드 이름과 달라야 합니다. 내장된 문서 에서 <field> 를 지정하려면 점 표기법 을 사용합니다.

다음 예를 고려하십시오.

db.students.updateOne(
{ _id: 1 }, { $rename: { 'nickname': 'alias', 'cell': 'mobile' } }
)

이전 작업은 _id가 1인 문서에서 nickname 필드의 이름을 alias로 바꾸고 cell 필드의 이름을 mobile로 바꿉니다.

$rename 작업을 실행하면 MongoDB는 다음 조치를 수행합니다.

  • 문서에서 이전 <field><newName>이 있는 필드를 삭제합니다( $unset 사용).

  • <newName>의 값을 사용하여 <newName>으로 $set 작업을 수행합니다.

업데이트 명령과 일치하는 각 문서는 개별 작업으로 업데이트됩니다. 업데이트 작업(예: $rename)은 단일 문서 수준에서만 원자성을 보장합니다.

$rename 작업으로 인해 문서에서 필드 순서가 유지되지 않을 수 있습니다.

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

$rename 연산자는 내장된 문서 안팎으로 필드를 이동할 수 있습니다.

$rename 배열에 내장된 문서에서는 작동하지 않습니다.

  • 문서 에 <newName> 가 있는 필드 가 이미 있는 경우 $rename 연산자 는 해당 필드 를 제거하고 지정된 <field> 의 이름을 <newName> 로 바꿉니다.

  • 이름을 바꿀 필드가 문서에 존재하지 않으면 $rename은 아무 작업도 수행하지 않습니다.

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

students 컬렉션을 생성합니다.

db.students.insertMany( [
{
"_id": 1,
"alias": [ "The American Cincinnatus", "The American Fabius" ],
"mobile": "555-555-5555",
"nmae": { "first" : "george", "last" : "washington" }
},
{
"_id": 2,
"alias": [ "My dearest friend" ],
"mobile": "222-222-2222",
"nmae": { "first" : "abigail", "last" : "adams" }
},
{
"_id": 3,
"alias": [ "Amazing grace" ],
"mobile": "111-111-1111",
"nmae": { "first" : "grace", "last" : "hopper" }
}
] )

문서에 오류가 있는 경우, 예를 들어 nmaename 이어야 합니다. 다음 섹션의 예는 컬렉션의 문서를 업데이트합니다.

필드 이름을 바꾸려면 필드의 현재 이름 및 새 이름과 함께 $rename 연산자를 호출하세요.

db.students.updateMany(
{ "nmae": { $ne: null } },
{ $rename: { "nmae": "name" } }
)

이 작업은 nmae 필드가 null이 아닌 문서를 확인하고 해당 문서를 업데이트하여 nmae 필드의 이름을 name으로 바꿉니다.

{
"_id": 1,
"alias": [ "The American Cincinnatus", "The American Fabius" ],
"mobile": "555-555-5555",
"name": { "first" : "george", "last" : "washington" }
}
{
"_id" : 2,
"alias" : [ "My dearest friend" ],
"mobile" : "222-222-2222",
"name" : { "first" : "abigail", "last" : "adams" }
}
{
"_id" : 3,
"alias" : [ "Amazing grace" ],
"mobile" : "111-111-1111",
"name" : { "first" : "grace", "last" : "hopper" }
}

임베드된 문서에서 필드 이름을 바꾸려면 점 표기법 $rename을 사용하여 연산자를 호출하여 필드를 참조합니다. 필드가 같은 임베드된 문서 내에 남아 있어야 한다면, 새 이름에도 점 표기법을 사용하세요.

db.students.updateOne( { _id: 1 }, { $rename: { "name.first": "name.fname" } } )

이 작업은 포함된 필드 first 의 이름을 fname로 변경합니다.

{
_id: 1,
alias: [ 'The American Cincinnatus', 'The American Fabius' ],
mobile: '555-555-5555',
name: { last: 'washington', fname: 'george' }
}

필드 이름을 바꿀 때 기존 필드 이름이 존재하지 않는 필드 를 참조하는 경우 $rename 연산자 는 다음과 같이 아무 작업도 수행하지 않습니다.

db.students.updateOne( { _id: 1 }, { $rename: { 'wife': 'spouse' } } )

이 작업은 wife이라는 필드가 없으므로 아무 작업도 수행하지 않습니다.

다음도 참조하세요.

돌아가기

$mul

이 페이지의 내용