HOWTO · MongoDB

MongoDB의 자동 증가

이 튜토리얼에서는 MongoDB에서 자동 증분을 구현하는 방법에 대해 설명합니다.

이 페이지의 내용

대부분의 SQL 쿼리 언어에는 필드 자동 증가를 위한 단일 키워드가 포함되어 있지만 MongoDB에서는 약간 복잡합니다. MongoDB에는 자동 증가에 사용할 수 있는 키워드가 없습니다.

이 기사에서는 자동 증가 기능을 사용하여 MongoDB 컬렉션에 데이터를 삽입하는 방법을 보여주고 이를 쉽게 하기 위해 주제와 관련된 예제를 볼 것입니다.

MongoDB에서 자동 증분 기능 적용

새 문서가 컬렉션에 삽입된 후 증가해야 하는 일부 필드에는 일련 번호, ID 등이 포함됩니다. 그러나 쿼리에 간단한 문자를 추가하면 이 작업을 자동으로 수행할 수 있습니다.

이 목적으로 사용할 키워드는 $inc이며 특정 데이터 값을 증가시킵니다. 이를 쿼리에 통합하는 방법을 살펴보겠습니다.

아래 예제에서는 MongoDB에서 자동 증분을 사용하는 방법을 보여줍니다. 이를 위해 먼저 시퀀스 번호를 추적할 count라는 새 컬렉션을 만들어야 합니다.

아래와 같은 문서를 삽입하여 컬렉션을 초기화해 봅시다.

db.count.insert(
   {
      _id: "incId",
      seq: 0
   }
)

이렇게 하면 증분 시퀀스가 0으로 초기화됩니다. 이제 count 컬렉션과 지정된 컬렉션 모두에서 값을 증가시키는 autoIncrement()라는 함수를 생성합니다.

function autoIncrement(name) {
   var ret = db.count.findAndModify(
          {
            query: { _id: name },
            update: { $inc: { seq: 1 } },
            new: true
          }
   );

   return ret.seq;
}

이 함수는 증분된 시퀀스 값을 반환하며, 아래와 같이 함수를 호출하여 삽입 함수에서 사용할 수 있습니다.

db.mycollection.insert({ sl: autoIncrement("incId"), Name: "Retro"});
db.mycollection.insert({ sl: autoIncrement("incId"), Name: "Max"});

위의 명령을 실행한 후 필드 값을 수동으로 증분할 필요가 없습니다. 문서를 삽입하면 콘솔에 아래와 같은 출력이 표시됩니다.

{ _id: ObjectId("6388f500054350812fa6b073"),
  sl: 1,
  Name: 'Retro' }
{ _id: ObjectId("6388f94e054350812fa6b075"),
  sl: 2,
  Name: 'Max'
}

여러 컬렉션의 값을 증가시키기 위해 하나의 계산 컬렉션을 사용할 수 없음을 기억하십시오. 컬렉션 count는 증분 값을 보유하고 업데이트하는 변수와 같으므로 여러 컬렉션에서 값을 증분하려면 카운팅 컬렉션을 만들어야 합니다.

이 문서에 표시된 명령은 MongoDB 데이터베이스용이며 명령은 MongoDB 콘솔에서 실행해야 합니다.