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)羣,幫你解決問題:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章