백그라운드
최근에 버그 기록 시스템이 포함된 테스트 툴박스를 작성하던 중 배경을 구현하기 위해 Django와 MongoDB를 사용했기 때문에 다음과 같은 질문을 받았습니다. 자동 증가 필드를 구현하는 방법입니다.
기존의 관계형 데이터베이스를 구현하는 것은 매우 쉽습니다. 자동 증가 필드를 직접 설정하면 됩니다. 데이터를 삽입할 때 이 키 값에 대해 걱정할 필요가 없습니다. 자동 증가 기능을 자동으로 구현하지만 비관계형 데이터베이스에는 이 기능이 없는 것 같습니다(또는 모르겠습니다). Baidu는 나중에 그것이 모두 내가 원하는 것이 아닌 MongoDB 설정 방법이라는 것을 발견했습니다.
솔루션 아이디어
바이두는 좋은 아이디어를 찾지 못해서 스스로 해결할 수 밖에 없습니다. 필드는 자체 증가하지 않으므로 직접 자체 증가 계획을 만드십시오.
MongoDB의 수정된 메소드에 int형의 자동 증가를 구현할 수 있는 $inc 메소드가 있다는 것을 발견했습니다. 그러면 매우 간단합니다. 직접 컬렉션을 생성하면 이 컬렉션에 데이터를 삽입할 때마다 이 컬렉션에 와서 ID를 가져온 다음 자동으로 자체 호출하면 됩니다. 증가 계획이 달성되었습니다.
코드 표시
Python은 구현이 매우 간단합니다. Python과 Django는 매우 호환됩니다. 코드는 다음과 같습니다.
def bugPlus(self): """ bugID自增 :return:True """ db = self.__chooseCollection(config.COLLECTION['bugID']) db.update_one({"bugID": self.getBugID()}, {"$inc": {"bugID": 1}}) return True
삽입에 성공할 때마다 이 메소드를 호출하면 자체 증가를 실현할 수 있습니다. ID.
def getBugID(self): """ 获取当前bug的最新编号 :return:None """ db = self.__chooseCollection(config.COLLECTION['bugID']) rst = db.find_one() return rst['bugID']
삽입하기 전에 이 메소드를 호출하여 데이터가 삽입될 때마다 삽입되는 ID가 자동으로 증가되는 ID가 되도록 합니다.
단점
물론 이 방법은 호출할 때 사용하는 방법이 더 많아지기 때문에 확인이 필요합니다. method 실행이 성공했는지 여부, 그렇지 않으면 다음에 삽입된 ID는 자체 증가된 데이터가 아닙니다. 메서드가 두 번 이상 호출될 때마다 성능이 저하됩니다.
기타
더 좋은 구현 방법이 있다면 알려주세요!
위의 Python+MongoDB 자체 증가 키 값의 간단한 구현은 모두 편집자가 공유한 내용이므로 참조할 수 있기를 바라며 PHP 중국어 웹사이트를 지원해 주시길 바랍니다.
Python+MongoDB 자동 증가 키 값의 간단한 구현과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!