몽고DB 튜토리얼login
몽고DB 튜토리얼
작가:php.cn  업데이트 시간:2022-04-21 17:49:03

MongoDB 자동 증가


MongoDB에는 SQL과 같은 자동 증가 기능이 없습니다. MongoDB의 _id는 시스템에서 자동으로 생성되는 12바이트 고유 식별자입니다.

그러나 경우에 따라 ObjectId 자동 증가 기능을 구현해야 할 수도 있습니다.

MongoDB는 이 기능을 구현하지 않으므로 프로그래밍 방식으로 구현할 수 있습니다. 카운터 컬렉션에서 _id 필드의 자동 증가를 구현합니다.


카운터 컬렉션 사용

다음 제품 문서를 고려하세요. 우리는 _id 필드를 구현하기를 원합니다. 1,2,3,4에서 n까지 자동 증가 기능.

{
  "_id":1,
  "product_name": "Apple iPhone",
  "category": "mobiles"
}

이를 위해 카운터 컬렉션을 생성하면 시퀀스 필드 값이 자동으로 커질 수 있습니다.

>db.createCollection("counters")

이제 productid를 키로 사용하여 다음 문서를 카운터 컬렉션에 삽입합니다.

{
  "_id":"productid",
  "sequence_value": 0
}

sequence_value 필드는 시퀀스 이후의 값은 자동으로 증가합니다.

다음 명령을 사용하여 카운터 컬렉션의 시퀀스 문서에 삽입합니다.

>db.counters.insert({_id:"productid",sequence_value:0})

Javascript 함수 생성

이제 시퀀스 이름에 대한 입력으로 getNextSequenceValue 함수를 생성합니다. 지정된 시퀀스는 자동으로 1씩 증가하고 최신 시퀀스 값이 반환됩니다. 이 기사의 예에서 시퀀스 이름은 productid입니다. .

>function getNextSequenceValue(sequenceName){
   var sequenceDocument = db.counters.findAndModify(
      {
         query:{_id: sequenceName },
         update: {$inc:{sequence_value:1}},
         new:true
      });
   return sequenceDocument.sequence_value;
}

Javascript 함수 사용

다음으로 getNextSequenceValue 함수를 사용하여 새 문서를 생성하겠습니다. 그리고 문서 _id를 반환된 시퀀스 값으로 자동 설정합니다.

>db.products.insert({
   "_id":getNextSequenceValue("productid"),
   "product_name":"Apple iPhone",
   "category":"mobiles"})

>db.products.insert({
   "_id":getNextSequenceValue("productid"),
   "product_name":"Samsung S3",
   "category":"mobiles"})

보시다시피 getNextSequenceValue 함수를 사용하여 _id 필드를 설정합니다.

함수가 유효한지 확인하기 위해 다음 명령을 사용하여 문서를 읽을 수 있습니다.

>db.products.find()

위 명령은 다음 결과를 반환하며 _id 필드가 자동으로 증가하는 것을 확인합니다.

{ "_id" : 1, "product_name" : "Apple iPhone", "category" : "mobiles"}

{ "_id" : 2, "product_name" : "Samsung S3", "category" : "mobiles" }

PHP 중국어 웹사이트