使用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'}
数据库中id为自增
猜你喜欢
转载自www.cnblogs.com/xdlzs/p/10684269.html
今日推荐
周排行