MongoDB에서 _id로 문서 업데이트하기
MongoDB에서 특정 _id를 기준으로 문서를 업데이트하려면 $set 연산자를 사용합니다. 이 글에서는 실제 예제를 통해 단계별로 업데이트 과정을 살펴보겠습니다.
1단계: 컬렉션 생성 및 문서 삽입
먼저 예제에 사용할 컬렉션을 생성하고 문서를 삽입합니다.
db.demo741.insertOne({SubjectName:"MySQL"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead718657bb72a10bcf0672")
}
> db.demo741.insertOne({SubjectName:"C"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead718957bb72a10bcf0673")
}
> db.demo741.insertOne({SubjectName:"Java"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5ead718e57bb72a10bcf0674")
}2단계: find() 메서드로 전체 문서 조회
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo741.find();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5ead718657bb72a10bcf0672"), "SubjectName" : "MySQL" }
{ "_id" : ObjectId("5ead718957bb72a10bcf0673"), "SubjectName" : "C" }
{ "_id" : ObjectId("5ead718e57bb72a10bcf0674"), "SubjectName" : "Java" }3단계: _id를 기준으로 문서 업데이트
다음은 _id 값을 기준으로 문서를 업데이트하는 쿼리입니다. 첫 번째 인수에는 찾고자 하는 문서의 조건을, 두 번째 인수에는 $set 연산자를 사용하여 변경할 필드와 값을 지정합니다.
>db.demo741.update({_id:ObjectId("5ead718957bb72a10bcf0673")},{$set:{SubjectName:"PL/SQL"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })실행 결과로 반환되는 WriteResult 객체를 통해 업데이트 상태를 확인할 수 있습니다. nMatched는 조건에 일치한 문서 수, nModified는 실제로 수정된 문서 수를 의미합니다.
4단계: 업데이트 결과 확인
다시 한번 find() 메서드를 실행하여 변경 사항이 정상적으로 적용되었는지 확인해 보겠습니다.
> db.demo741.find();
실행 결과를 보면 ObjectId("5ead718957bb72a10bcf0673")에 해당하는 문서의 SubjectName 값이 "C"에서 "PL/SQL"로 성공적으로 변경된 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5ead718657bb72a10bcf0672"), "SubjectName" : "MySQL" }
{ "_id" : ObjectId("5ead718957bb72a10bcf0673"), "SubjectName" : "PL/SQL" }
{ "_id" : ObjectId("5ead718e57bb72a10bcf0674"), "SubjectName" : "Java" }정리
이처럼 MongoDB에서는 update() 메서드와 $set 연산자를 함께 사용하여 _id를 기준으로 원하는 필드만 선택적으로 업데이트할 수 있습니다. 참고로 최신 MongoDB 버전에서는 단일 문서 수정 시 updateOne(), 여러 문서 수정 시 updateMany() 메서드 사용이 권장됩니다.