Docs Menu
Docs Home
/
MongoDB Shell
/

문서 업데이트

이 페이지의 내용

  • 연산자 구문 업데이트
  • 단일 문서 업데이트
  • 여러 문서 업데이트하기
  • 문서 교체하기
  • 동작 업데이트
  • 자세히 알아보기

MongoDB Shell에서는 다음과 같은 방법으로 컬렉션의 문서를 업데이트할 수 있습니다.

이 페이지의 예시는 Atlas 샘플 데이터세트를 참조합니다. 빈 Atlas 클러스터를 생성하고 예시에 따라 Atlas 클러스터를 샘플 데이터로 채웁니다. Atlas 시작하기를 참고하여 자세한 내용을 학습할 수 있습니다.

문서를 업데이트하기 위해 MongoDB는 $set과 같은 업데이트 연산자를 제공하여 필드 값을 수정합니다.

업데이트 연산자를 사용하려면 아래 형식의 업데이트 문서를 업데이트 메서드에 전달합니다.

{
<update operator>: { <field1>: <value1>, ... },
<update operator>: { <field2>: <value2>, ... },
...
}

$set 등 일부 업데이트 연산자는 필드가 존재하지 않는 경우 필드를 생성합니다. 자세한 내용은 개별 업데이트 연산자 참조에서 확인할 수 있습니다.

db.collection.updateOne() 메서드를 사용하여 지정된 필터와 일치하는 첫 번째 문서를 업데이트합니다.

참고

MongoDB는 문서의 자연스러운 정렬 순서를 유지합니다. 이 순서는 내부 구현 기능이므로 특정 구조에 의존하지 않아야 합니다. 자세한 내용은 기본 순서에서 확인하세요.

예시

title "Twilight"sample_mflix.movies collection의 first 문서를 업데이트하려면 다음을 수행하세요.

use sample_mflix
db.movies.updateOne( { title: "Twilight" },
{
$set: {
plot: "A teenage girl risks everything–including her life–when she falls in love with a vampire."
},
$currentDate: { lastUpdated: true }
})

업데이트 작업입니다:

  • $set 연산자를 사용하여 영화 Twilightplot 필드 값을 업데이트합니다.

  • $currentDate 연산자를 사용하여 lastUpdated 필드의 값을 현재 날짜로 업데이트합니다. lastUpdated 필드가 없으면 $currentDate 필드를 생성합니다. 자세한 내용은 $currentDate를 참조하세요.

db.collection.updateMany()를 사용하여 지정된 필터와 일치하는 모든 문서를 업데이트합니다.

예시

security_deposit100보다 작을 때 sample_airbnb.listingsAndReviews 컬렉션의 모든 문서를 업데이트하려면 다음을 실행합니다.

use sample_airbnb
db.listingsAndReviews.updateMany(
{ security_deposit: { $lt: 100 } },
{
$set: { security_deposit: 100, minimum_nights: 1 }
}
)

업데이트 작업은 $set 연산자를 사용하여 security_deposit 필드의 값을 100으로 업데이트하고 minimum_nights 필드의 값을 1로 업데이트합니다.

_id 필드를 제외한 문서의 전체 내용을 교체하려면 db.collection.replaceOne()에 완전히 새로운 문서를 두 번째 인수로 전달합니다.

문서를 교체할 때에는 교체 문서에 필드/값 쌍만 포함되어야 합니다. 업데이트 연산자 표현식은 포함할 수 없습니다.

교체 문서는 원본 문서와 다른 필드를 가질 수 있습니다. 교체 문서에서 _id 필드는 변경되지 않으므로 _id 필드를 생략할 수 있지만, _id 필드를 포함할 경우 현재 값과 동일한 값을 보유해야 합니다.

예시

account_id: 371138일 때 sample_analytics.accounts 컬렉션에서 문서를 교체하려면 다음을 실행합니다.

db.accounts.replaceOne(
{ account_id: 371138 },
{ account_id: 893421, limit: 5000, products: [ "Investment", "Brokerage" ] }
)

아래 명령을 실행하여 업데이트된 문서를 읽습니다.

db.accounts.findOne( { account_id: 893421 } )

문서 업데이트의 특정 동작에 대해 자세히 알아보려면 동작을 참조하세요.

돌아가기

읽기