python中设置mongo的id为自增(find_and_modify函数)

使用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)

#coding:utf-8
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'}

欢迎进(Q)群,帮你解决问题:
在这里插入图片描述

你可能感兴趣的:(python,mongo自增,id自增,python-id,py-mongo,python)