Python+MongoDB自增键值的实现
来源:互联网 发布:远程网络教育入学考试 编辑:程序博客网 时间:2024/06/07 20:29
背景
最近在写一个测试工具箱,里面有一个bug记录系统,因为后台我是用Django和MongoDB来实现的,就遇到了一个问题,要如何实现一个自增的字段。
传统的关系型数据库要实现起来是非常容易,只要直接设置一个自增字段就行了,插入数据时不用管这个键值,只管自己处理的数据就行了,会自动实现自增的功能,但是非关系型数据库好像没有这个功能(或者我不知道)。百度之后发现都是MongoDB的设置方法,并不是我想要的。
解决思路
百度没有找到好的思路,那就只能自己解决了,我的想法很简单,字段不会自增,那么就自己造一个自增的方案。
我发现在MongoDB修改的方法有一个$inc
的方法.可以实现int
类型的自增。那么就非常简单了,自己建一个collection
,然后这个collection
中只有一个int
的字段,每次插入数据时来这个collection
取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不是自增后的数据。每次多调了一次方法,会导致性能下降。
其他
如果有更好的实现方式,请告诉我!
0 0
- Python+MongoDB自增键值的实现
- Mongodb自增ID的实现
- mongodb 实现自增_id
- Python实现键值数据库
- MongoDB自增主键id生成器的设计和实现
- mongodb java下自增 id的实现
- MongoDB自增长ID的实现
- mybaitis 获取插入时自增的键值
- mongoDB 自增ID C++实现方法
- Mongodb 自动增长 自增id 实现
- mongoDB 自增ID C++实现方法
- Mongodb自增id实现方法
- Mongodb 自动增长 自增id 实现
- Mongodb 自动增长 自增id 实现
- MongoDB的nodejs 键值压缩driver
- 程序自启动,注册表键值的位置
- python字典多键值及重复键值的使用
- python字典多键值及重复键值的使用方法(详解)
- http://blog.csdn.net/liuhe688/article/details/6733407
- 【android】:android设计网站
- sencha Touch 省市区三级联动滚轮效果选择器
- Spring之旅
- thinkphp3.2【开发、生产模式】
- Python+MongoDB自增键值的实现
- iOS文字样式处理总结(字体、前背景色、斜体、加粗、对齐、行间距、段间距、动态获取字符串label宽高等)
- httpUrlConnection的参数详解
- selenium(java)浏览器多窗口切换处理
- openlayers3中polygon上添加icon
- Java多线程编程
- CentOS下安装Git和初始化一个Git仓库。
- && || 判断规则
- JAVA IO总结