Maison  >  Article  >  développement back-end  >  Implémentation simple de la valeur de clé d'incrémentation automatique Python MongoDB

Implémentation simple de la valeur de clé d'incrémentation automatique Python MongoDB

高洛峰
高洛峰original
2017-02-22 11:05:431807parcourir

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 !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn