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

MongoDB Capped(고정 크기) 컬렉션에서 단일 필드를 업데이트하는 방법

MongoDB에서 capped: true 옵션으로 생성한 Capped 컬렉션의 특정 필드를 수정하려면 update() 메서드를 사용하면 됩니다. 이번 글에서는 예제를 통해 Capped 컬렉션을 만들고, 단일 필드를 업데이트하는 전체 과정을 단계별로 살펴보겠습니다.

1. Capped 컬렉션 생성 및 데이터 삽입

먼저 capped: true, size, max 옵션을 지정하여 Capped 컬렉션을 생성하고 문서를 삽입합니다.

> db.createCollection("Demo112", { capped : true, size : 14, max : 3 } );
{ "ok" : 1 }
> db.demo112.insertOne({"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2ef47a9fd5fd66da21447e")
}
> db.demo112.insertOne({"Name":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2ef47e9fd5fd66da21447f")
}
> db.demo112.insertOne({"Name":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2ef4919fd5fd66da214480")
}

2. 현재 저장된 문서 확인하기

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

> db.demo112.find();

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

{ "_id" : ObjectId("5e2ef47a9fd5fd66da21447e"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2ef47e9fd5fd66da21447f"), "Name" : "David" }
{ "_id" : ObjectId("5e2ef4919fd5fd66da214480"), "Name" : "David" }

3. 단일 필드 업데이트 쿼리 실행

다음은 Capped 컬렉션에서 단일 필드를 업데이트하는 쿼리입니다. $set 연산자로 변경할 필드를 지정하고, multi: true 옵션을 추가하면 조건에 일치하는 모든 문서가 한 번에 수정됩니다.

> db.demo112.update(
...    {Name:"David"},
...    {$set:{Name: "Robert"}},
...    {multi:true}
... )
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

실행 결과를 보면 조건에 일치한 2개의 문서(nMatched: 2)가 모두 성공적으로 수정(nModified: 2)되었음을 알 수 있습니다.

4. 업데이트 결과 확인

다시 find() 메서드로 컬렉션의 모든 문서를 조회해 보겠습니다.

> db.demo112.find();

Name 필드가 "David"였던 두 문서가 모두 "Robert"로 변경된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e2ef47a9fd5fd66da21447e"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2ef47e9fd5fd66da21447f"), "Name" : "Robert" }
{ "_id" : ObjectId("5e2ef4919fd5fd66da214480"), "Name" : "Robert" }

핵심 정리

  • Capped 컬렉션도 일반 컬렉션과 동일하게 update() 메서드로 필드를 수정할 수 있습니다.
  • $set 연산자를 사용하면 지정한 필드만 선택적으로 변경됩니다.
  • multi: true 옵션을 설정하면 조건에 맞는 여러 문서를 한 번에 업데이트할 수 있습니다.
  • Capped 컬렉션은 고정된 크기를 가지며, 용량이 가득 차면 가장 오래된 문서부터 자동으로 삭제됩니다.