バックグラウンド
最近、私はバグ記録システムを備えたテストツールボックスを作成しています。バックグラウンドを実装するために Django と MongoDB を使用しているため、自動インクリメントフィールドを実装する方法という問題に遭遇しました。
従来のリレーショナル データベースの実装は非常に簡単で、データを挿入するときに、このキーの値を気にする必要はありません。関数は自動的に実装されますが、非リレーショナル データベースにはこの機能がないようです (または私は知りません)。その後、Baidu はそれらがすべて MongoDB の設定方法であることを発見しましたが、これは私が望んでいたものではありませんでした。
解決策のアイデア
Baiduは良いアイデアを見つけていないので、それ自体で解決することしかできません。私のアイデアは非常に単純です。フィールドは自動的には増加しないので、私は自分で自動増加ソリューションを作成します。
MongoDBの修正メソッドに、int型の自動インクリメントを実現できる$incメソッドがあることがわかりました。それは非常に簡単です。自分でコレクションを作成すると、このコレクションには int フィールドが 1 つだけあり、データを挿入するたびに、このコレクションにアクセスして ID を取得し、$inc メソッドを呼び出して自動的に実行します。増加計画は達成されます。
コード表示
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になるようにします。
欠点
もちろん、このメソッドにはまだ欠点があります。呼び出し時に使用されるメソッドが増えるため、メソッドが正常に実行されたかどうかを確認する必要があります。そうしないと、次回挿入されるIDはその後のデータではなくなります。自動インクリメント。メソッドが複数回呼び出されるたびに、パフォーマンスが低下します。
その他
もっと良い実装方法があれば、教えてください!
上記の Python+MongoDB の自動インクリメントキー値の簡単な実装は、エディターによって共有されたすべての内容です。参考にしていただければ幸いです。また、PHP 中国語 Web サイトをサポートしていただければ幸いです。
Python+MongoDB の自動インクリメントキー値の簡単な実装に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。