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

MongoDB 객체를 업데이트하는 방법 완벽 가이드

MongoDB에서 저장된 객체(도큐먼트)를 수정하려면 update() 메서드를 사용하면 됩니다. 이 글에서는 실제 예제를 통해 MongoDB 객체를 업데이트하는 과정을 단계별로 살펴보겠습니다.

1. 컬렉션 생성 및 도큐먼트 삽입

먼저 insertOne() 메서드를 사용해 demo77이라는 컬렉션에 도큐먼트를 하나 삽입합니다.

> db.demo77.insertOne({"Details" : { "Score" : 78 } });
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2bd6f371bf0181ecc4228a")
}

2. 현재 데이터 확인하기

find() 메서드를 사용하면 컬렉션에 있는 모든 도큐먼트를 조회할 수 있습니다.

> db.demo77.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e2bd6f371bf0181ecc4228a"), "Details" : { "Score" : 78 } }

3. update() 메서드로 객체 업데이트하기

이제 update() 메서드와 $set 연산자를 사용하여 중첩된 필드인 Details.Score 값을 78에서 89로 변경해 보겠습니다.

> db.demo77.update({'Details.Score':78},{$set:{'Details.Score':89}},{multi:true});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

여기서 각 옵션의 의미는 다음과 같습니다.

  • 첫 번째 인수 {'Details.Score':78}: 업데이트 대상이 될 도큐먼트를 찾기 위한 조건(필터)입니다.
  • $set 연산자: 지정한 필드의 값을 새로운 값으로 변경합니다.
  • {multi:true}: 조건에 일치하는 모든 도큐먼트를 한 번에 업데이트합니다. 이 옵션이 없으면 첫 번째로 일치하는 문서만 수정됩니다.

실행 결과의 nMatched는 조건에 일치한 문서 수, nModified는 실제로 수정된 문서 수를 의미합니다.

4. 업데이트 결과 확인하기

다시 find() 메서드를 실행하여 변경된 내용을 확인합니다.

> db.demo77.find();

Score 값이 정상적으로 89로 변경된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e2bd6f371bf0181ecc4228a"), "Details" : { "Score" : 89 } }

참고: 최신 MongoDB 버전에서는?

MongoDB 4.2 이상 버전에서는 update() 대신 updateOne()(단일 문서 수정) 또는 updateMany()(여러 문서 수정) 메서드 사용이 권장됩니다. 기존 update() 메서드는 하위 호환성을 위해 유지되고 있지만, 새 프로젝트에서는 새로운 메서드를 사용하는 것이 좋습니다.

> db.demo77.updateMany(
...    { 'Details.Score': 78 },
...    { $set: { 'Details.Score': 89 } }
... );