Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 일치하는 필드 기준으로 조건부 업데이트 수행하기

MongoDB에서 조건부 업데이트를 수행하려면 update() 메서드를 사용하고, 변경할 새 값은 $set 연산자로 지정하면 됩니다. 이번 글에서는 실제 예제를 통해 특정 필드가 일치하는 문서만 골라서 값을 수정하는 방법을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성

먼저 학생 정보를 담은 컬렉션을 만들고 문서를 삽입합니다.

> db.demo150.insertOne({"StudentId":101,"StudentName":"Chris","StudentMarks":35});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e350dcdfdf09dd6d08539d3")
}
> db.demo150.insertOne({"StudentId":102,"StudentName":"Chris","StudentMarks":55});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e350dcefdf09dd6d08539d4")
}
> db.demo150.insertOne({"StudentId":103,"StudentName":"David","StudentMarks":34});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e350dcffdf09dd6d08539d5")
}
> db.demo150.insertOne({"StudentId":104,"StudentName":"Chris","StudentMarks":38});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e350dd0fdf09dd6d08539d6")
}

2. 전체 문서 조회하기

find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.

> db.demo150.find();

위 쿼리는 다음과 같은 결과를 출력합니다.

{ "_id" : ObjectId("5e350dcdfdf09dd6d08539d3"), "StudentId" : 101, "StudentName" : "Chris", "StudentMarks" : 35 }
{ "_id" : ObjectId("5e350dcefdf09dd6d08539d4"), "StudentId" : 102, "StudentName" : "Chris", "StudentMarks" : 55 }
{ "_id" : ObjectId("5e350dcffdf09dd6d08539d5"), "StudentId" : 103, "StudentName" : "David", "StudentMarks" : 34 }
{ "_id" : ObjectId("5e350dd0fdf09dd6d08539d6"), "StudentId" : 104, "StudentName" : "Chris", "StudentMarks" : 38 }

3. 조건에 맞는 문서 업데이트하기

이제 update() 메서드의 첫 번째 인자로 조건(필터)을 지정하고, 두 번째 인자에서 $set으로 새 값을 설정하여 조건부 업데이트를 실행합니다. 아래 예제에서는 StudentId가 103인 문서만 찾아 StudentMarks 값을 97로 변경합니다.

> db.demo150.update({"StudentId":103},{$set:{"StudentMarks":97}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

실행 결과인 WriteResult를 보면 nMatched: 1(조건에 일치한 문서 1개), nModified: 1(실제 수정된 문서 1개)임을 확인할 수 있습니다.

4. 업데이트 결과 확인

다시 find() 메서드로 전체 문서를 조회해 보겠습니다.

> db.demo150.find();

출력 결과를 살펴보면 StudentId가 103인 David의 점수만 34에서 97로 변경된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e350dcdfdf09dd6d08539d3"), "StudentId" : 101, "StudentName" : "Chris", "StudentMarks" : 35 }
{ "_id" : ObjectId("5e350dcefdf09dd6d08539d4"), "StudentId" : 102, "StudentName" : "Chris", "StudentMarks" : 55 }
{ "_id" : ObjectId("5e350dcffdf09dd6d08539d5"), "StudentId" : 103, "StudentName" : "David", "StudentMarks" : 97 }
{ "_id" : ObjectId("5e350dd0fdf09dd6d08539d6"), "StudentId" : 104, "StudentName" : "Chris", "StudentMarks" : 38 }

정리

MongoDB에서 조건부 업데이트의 핵심은 다음과 같습니다.
- 첫 번째 인자: 어떤 문서를 수정할지 결정하는 필터 조건
- 두 번째 인자: $set 등의 업데이트 연산자로 변경할 필드와 값 지정
- 조건에 일치하는 문서만 선택적으로 수정되며, 나머지 문서는 그대로 유지됩니다.