MongoDB 문서 업데이트 개요
MongoDB에서 기존 문서의 특정 필드 값을 변경하려면 update() 메서드와 함께 $set 연산자를 사용합니다. $set은 지정한 필드만 선택적으로 수정하며, 나머지 필드는 그대로 유지됩니다.
이번 예제에서는 학생 정보 컬렉션을 만들고, 학생 ID(StudentId)를 조건으로 사용해 학생 이름(StudentName)을 업데이트하는 과정을 단계별로 살펴보겠습니다.
1단계: 샘플 데이터 삽입
먼저 insertOne() 메서드를 사용해 demo427 컬렉션에 학생 문서들을 생성합니다.
> db.demo427.insertOne({"StudentId":101,"StudentName":"Chris Brown"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e75e711bbc41e36cc3cae75")
}
> db.demo427.insertOne({"StudentId":102,"StudentName":"David Miller"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e75e71abbc41e36cc3cae76")
}
> db.demo427.insertOne({"StudentId":103,"StudentName":"John Smith"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e75e725bbc41e36cc3cae77")
}
> db.demo427.insertOne({"StudentId":104,"StudentName":"Carol Taylor"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e75e733bbc41e36cc3cae78")
}2단계: 전체 문서 조회
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo427.find();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e75e711bbc41e36cc3cae75"), "StudentId" : 101, "StudentName" : "Chris Brown" }
{ "_id" : ObjectId("5e75e71abbc41e36cc3cae76"), "StudentId" : 102, "StudentName" : "David Miller" }
{ "_id" : ObjectId("5e75e725bbc41e36cc3cae77"), "StudentId" : 103, "StudentName" : "John Smith" }
{ "_id" : ObjectId("5e75e733bbc41e36cc3cae78"), "StudentId" : 104, "StudentName" : "Carol Taylor" }3단계: update()와 $set으로 문서 수정
다음 쿼리는 StudentId가 102인 문서를 찾아 해당 학생의 이름을 "John Doe"로 변경합니다.
> db.demo427.update({"StudentId":102},{$set:{"StudentName":"John Doe"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })실행 결과의 WriteResult를 보면 nMatched가 1(조건에 일치한 문서 수), nModified가 1(실제로 수정된 문서 수)로 정상적으로 업데이트가 완료되었음을 알 수 있습니다.
4단계: 업데이트 결과 확인
다시 find() 메서드로 전체 문서를 조회해 변경 사항을 확인합니다.
> db.demo427.find();
출력 결과를 보면 StudentId가 102인 문서의 StudentName이 "David Miller"에서 "John Doe"로 성공적으로 변경된 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5e75e711bbc41e36cc3cae75"), "StudentId" : 101, "StudentName" : "Chris Brown" }
{ "_id" : ObjectId("5e75e71abbc41e36cc3cae76"), "StudentId" : 102, "StudentName" : "John Doe" }
{ "_id" : ObjectId("5e75e725bbc41e36cc3cae77"), "StudentId" : 103, "StudentName" : "John Smith" }
{ "_id" : ObjectId("5e75e733bbc41e36cc3cae78"), "StudentId" : 104, "StudentName" : "Carol Taylor" }참고 사항
update() 메서드는 여러 문서가 조건에 일치하더라도 기본적으로 첫 번째 문서만 수정합니다. 조건에 일치하는 모든 문서를 한 번에 변경하려면 multi 옵션을 true로 설정하거나, 최신 MongoDB 버전에서 권장되는 updateMany() 메서드를 사용하는 것이 좋습니다. 또한 단일 문서 수정에는 updateOne()을 사용하면 더 명확하게 의도를 표현할 수 있습니다.