Contexte
Récemment, j'écrivais une boîte à outils de test, qui dispose d'un système d'enregistrement de bogues. Parce que j'utilisais Django et MongoDB pour implémenter l'arrière-plan, j'ai rencontré une question. c'est-à-dire comment implémenter un champ auto-incrémenté.
Il est très simple d'implémenter une base de données relationnelle traditionnelle. Il suffit de définir directement un champ à incrémentation automatique. Lors de l'insertion de données, vous n'avez pas à vous soucier de cette valeur clé. La fonction d'auto-incrémentation sera automatiquement implémentée, mais les bases de données non relationnelles ne semblent pas avoir cette fonction (ou je ne sais pas). Baidu a découvert plus tard qu'il s'agissait toutes de méthodes de configuration de MongoDB, ce qui n'était pas ce que je voulais.
Idées de solutions
Baidu n'a pas trouvé de bonne idée, il ne peut donc la résoudre que par lui-même. Mon idée est très simple, la. Les champs ne s'auto-augmenteront pas, alors créez vous-même un plan auto-croissant.
J'ai trouvé que la méthode modifiée dans MongoDB a une méthode $inc, qui peut réaliser l'auto-incrémentation du type int. Ensuite, c'est très simple. Créez vous-même une collection, et il n'y a alors qu'un seul champ int dans cette collection. Chaque fois que vous insérez des données, accédez simplement à cette collection pour obtenir l'ID, puis appelez la méthode $inc, puis incrémentez automatiquement. sera réalisé.
Affichage du code
Python est très simple à implémenter Python et Django sont très compatibles. Le code est le suivant :
def bugPlus(self): """ bugID自增 :return:True """ db = self.__chooseCollection(config.COLLECTION['bugID']) db.update_one({"bugID": self.getBugID()}, {"$inc": {"bugID": 1}}) return True
Après chaque insertion réussie, l'appel de cette méthode peut réaliser l'auto-incrémentation de la pièce d'identité.
def getBugID(self): """ 获取当前bug的最新编号 :return:None """ db = self.__chooseCollection(config.COLLECTION['bugID']) rst = db.find_one() return rst['bugID']
Avant l'insertion, appelez cette méthode, afin que l'ID inséré à chaque fois que des données sont insérées soit l'ID qui est auto-incrémenté.
Inconvénients
Bien sûr, cette méthode présente encore des inconvénients. Plus de méthodes sont utilisées lors de l'appel, vous devez donc confirmer le. méthode Si l'exécution est réussie, sinon l'ID inséré la prochaine fois ne sera pas les données auto-incrémentées. Chaque fois que la méthode est appelée plusieurs fois, les performances diminuent.
Autres
S'il existe une meilleure façon de le mettre en œuvre, dites-le-moi !
L'implémentation simple ci-dessus de la valeur clé auto-croissante de Python MongoDB est tout le contenu partagé par l'éditeur. J'espère qu'il pourra vous donner une référence et j'espère que vous soutiendrez le site Web PHP chinois.
Pour plus d'articles liés à l'implémentation simple de la valeur de clé d'incrémentation automatique de Python MongoDB, veuillez faire attention au site Web PHP chinois !