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

MongoDB 문서에서 특정 값만 업데이트하는 방법 ($set 연산자 활용)

MongoDB에서 문서의 특정 값만 업데이트하려면 update() 메서드를 사용하고, 변경할 새 값은 $set 연산자로 지정하면 됩니다. 이 글에서는 실제 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.

1. 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용해 'demo201' 컬렉션에 세 개의 클라이언트 문서를 생성합니다.

> db.demo201.insertOne({"ClientName":"Chris Brown","ClientAge":26});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3c39ca03d395bdc21346e5")
}
> db.demo201.insertOne({"ClientName":"David Miller","ClientAge":35});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3c39d403d395bdc21346e6")
}
> db.demo201.insertOne({"ClientName":"Carol Taylor","ClientAge":28});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3c39e603d395bdc21346e7")
}

2. 컬렉션의 모든 문서 조회

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

> db.demo201.find();

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

{ "_id" : ObjectId("5e3c39ca03d395bdc21346e5"), "ClientName" : "Chris Brown", "ClientAge" : 26 }
{ "_id" : ObjectId("5e3c39d403d395bdc21346e6"), "ClientName" : "David Miller", "ClientAge" : 35 }
{ "_id" : ObjectId("5e3c39e603d395bdc21346e7"), "ClientName" : "Carol Taylor", "ClientAge" : 28 }

3. 특정 값만 업데이트하는 쿼리

다음은 ClientAge가 35인 문서의 ClientName 값을 "John Doe"로 변경하는 MongoDB 업데이트 쿼리입니다. 세 번째 인자인 {multi:true} 옵션은 조건에 일치하는 모든 문서를 한 번에 업데이트하도록 지정합니다.

> db.demo201.update({"ClientAge":35},{$set:{"ClientName":"John Doe"}},{multi:true});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

실행 결과 nMatched(조건에 일치한 문서 수)는 1개, nModified(실제 수정된 문서 수)는 1개로 표시되며, 업데이트가 정상적으로 완료되었음을 확인할 수 있습니다.

4. 업데이트 후 결과 확인

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

> db.demo201.find();

업데이트 후 출력 결과는 다음과 같습니다.

{ "_id" : ObjectId("5e3c39ca03d395bdc21346e5"), "ClientName" : "Chris Brown", "ClientAge" : 26 }
{ "_id" : ObjectId("5e3c39d403d395bdc21346e6"), "ClientName" : "John Doe", "ClientAge" : 35 }
{ "_id" : ObjectId("5e3c39e603d395bdc21346e7"), "ClientName" : "Carol Taylor", "ClientAge" : 28 }

결과를 보면 기존에 David Miller였던 문서의 이름이 John Doe로 변경되었고, 나머지 필드(ClientAge 등)는 그대로 유지된 것을 확인할 수 있습니다. 이처럼 $set 연산자를 사용하면 문서 전체를 교체하지 않고 원하는 필드의 값만 선택적으로 수정할 수 있어 안전하고 효율적인 데이터 관리가 가능합니다.