문서 업데이트
MongoDB Shell에서는 다음과 같은 방법으로 컬렉션의 문서를 업데이트할 수 있습니다.
단일 문서를 업데이트하려면
db.collection.updateOne()
을 사용합니다.여러 문서를 업데이트하려면
db.collection.updateMany()
.를 사용합니다.문서를 교체하려면
db.collection.replaceOne()
을 사용합니다.
이 페이지의 예시는 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
연산자를 사용하여 영화Twilight
의plot
필드 값을 업데이트합니다.$currentDate
연산자를 사용하여lastUpdated
필드의 값을 현재 날짜로 업데이트합니다.lastUpdated
필드가 없으면$currentDate
필드를 생성합니다. 자세한 내용은$currentDate
를 참조하세요.
여러 문서 업데이트하기
db.collection.updateMany()
를 사용하여 지정된 필터와 일치하는 모든 문서를 업데이트합니다.
예시
security_deposit
이 100
보다 작을 때 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 } )
동작 업데이트
문서 업데이트의 특정 동작에 대해 자세히 알아보려면 동작을 참조하세요.
자세히 알아보기
집계 파이프라인을 사용하여 문서를 업데이트하는 방법을 알아보려면 집계 파이프라인으로 업데이트를 참조하세요.
문서를 업데이트하는 데 사용할 수 있는 모든 방법을 보려면 업데이트 방법을 참조하세요.