자동 증가 MongoDB를
MongoDB를 자동으로 성장 SQL 기능과 같은이없는, MongoDB를의 _id 고유 자동으로 생성 시스템을 식별하는 12 바이트입니다.
그러나, 일부 경우에, 우리는 특히 ObjectId에게 자동 증가 기능을 구현할 필요가있다.
MongoDB를이 기능을 구현하지 않기 때문에, 우리가 달성하기 위해 프로그래밍 할 수 있습니다, 우리는 자동으로 수집 카운터 다음 _id 필드가 성장을 달성 할 것입니다.
사용 카운터 수집
다음 제품 설명서를 고려한다. 우리는 1,2,3,4 _id 필드에 N 자동 증가 기능에서 달성 할 수 있도록 노력하겠습니다.
{ "_id":1, "product_name": "Apple iPhone", "category": "mobiles" }
이를 위해, 카운터 세트를 생성 자동 시퀀스 필드 값은 길 수 :
>db.createCollection("counters")
이제 우리는 컬렉션의 카운터, 키로서 사용 제품 ID에 다음의 서류를 삽입 :
{ "_id":"productid", "sequence_value": 0 }
sequence_value 필드 후 자동 증가에 의한 값의 순서입니다.
컬렉션의 문서 카운터를 삽입하려면 다음 명령 시퀀스를 사용하여
>db.counters.insert({_id:"productid",sequence_value:0})
자바 스크립트 기능 만들기
이제, 우리는 입력 시퀀스 이름 getNextSequenceValue 함수를 생성 지정된 시퀀스는 1 씩 자동 증가하여 최신 순서 값을 반환한다. 이 문서 시리즈의 예에서 제품 ID를했다.
>function getNextSequenceValue(sequenceName){ var sequenceDocument = db.counters.findAndModify( { query:{_id: sequenceName }, update: {$inc:{sequence_value:1}}, new:true }); return sequenceDocument.sequence_value; }
자바 스크립트 기능을 사용하여
다음으로 우리는 새로운 문서를 작성하고 반환 된 문서 _id 자동 시퀀스 값이 설정 getNextSequenceValue 기능을 사용합니다 :
>db.products.insert({ "_id":getNextSequenceValue("productid"), "product_name":"Apple iPhone", "category":"mobiles"}) >db.products.insert({ "_id":getNextSequenceValue("productid"), "product_name":"Samsung S3", "category":"mobiles"})
당신이 볼 수 있듯이, 우리는 _id 필드를 설정하는 데 getNextSequenceValue 함수를 사용합니다.
기능의 효과를 확인하기 위해 문서를 읽고 다음 명령을 사용할 수있다 :
>db.products.find()
위의 명령은 우리가 _id 필드가 자기 성장입니다 발견, 다음과 같은 결과를 반환합니다 :
{ "_id" : 1, "product_name" : "Apple iPhone", "category" : "mobiles"} { "_id" : 2, "product_name" : "Samsung S3", "category" : "mobiles" }