数据库中id为自增

 
使用find_and_modify函数
可以设置mongo的id为自增

且可以支持原有的高并发操作,
find_and_modify函数完成更新查找两个操作
其是原子性的操作

代码:(auto_id.py)

#coding:utf-8
import pymongo

client=pymongo.MongoClient('localhost',27017)#链接数据库

#创建dbdb数据库
db =client['dbdb']

#创建username_id集合
username_id = db['username_id']

#自增函数
def getNextValue(user_Name):
ret = username_id.find_and_modify({"_id": user_Name}, {"$inc": {"sequence_value": 1}}, safe=True, new=True)
new = ret["sequence_value"]
return new

if __name__=='__main__':
#插入username_id
username_id.insert_one(({'_id': "name", 'sequence_value': 0}))


代码(username.py)

import pymongo
from auto_id import getNextValue#导入自增函数
client=pymongo.MongoClient('localhost',27017)#链接数据库

db =client['dbdb']

#创建user_name集合
user_name =db['user_name']

if __name__=='__main__':
list_name=['xiaoming','zhangsan','wangwu','lisi']
for n in list_name:
user_name.insert_one({'_id':getNextValue('name'),'myname':n})
for i in user_name.find():
print(i)


执行username.py之前一定要先运行auto_id.py
让原始id为0,这样下次就从1开始。

切记住,auto_id.py 只需运行一次。
我们只需调用getNextValue函数,其便会自动增长。

结果:

{'_id': 1, 'myname': 'xiaoming'}
{'_id': 2, 'myname': 'zhangsan'}
{'_id': 3, 'myname': 'wangwu'}
{'_id': 4, 'myname': 'lisi'}

猜你喜欢

转载自www.cnblogs.com/xdlzs/p/10684269.html