连接资料库与资料表
连接到对应的资料库与资料表:
import pymongomyclient = pymongo.MongoClient('mongodb+srv://<username>:<password>@cluster0.4ejzf.gcp.mongodb.net/test') # 要连结到的 connect stringmydb = myclient["资料库名称"] # 指定资料库mycol = mydb["资料表名称"] # 指定资料表
新增
在已有的资料表建立一笔新的资料:
x = mycol.insert_one({"PlayerName": "Testname","PlayerId":1,"Status": 0,"Data": []})print(x.inserted_id) # 输出该新增资料的 id 编号
在已有的资料表建立多笔新的资料:
players_list = [{"PlayerName": "Testname1","PlayerId":1,"Status": 0,"Data": []},{"PlayerName": "Testname2","PlayerId":1,"Status": 0,"Data": []},{"PlayerName": "Testname3","PlayerId":2,"Status": 0,"Data": []}]x = mycol.insert_many(players_list)print(x.inserted_id) # 输出所有新增资料的 id 编号
在已有的资料表建立多笔指定 id 的新的资料:
players_list = [{ "_id": 1, "PlayerName": "Testname1","PlayerId":1,"Status": 0,"Data": []},{ "_id": 2, "PlayerName": "Testname2","PlayerId":1,"Status": 0,"Data": []},{ "_id": 3, "PlayerName": "Testname3","PlayerId":2,"Status": 0,"Data": []}]x = mycol.insert_many(players_list)print(x.inserted_id) # 输出所有新增资料的 id 编号
删除
删除符合条件的一笔资料:
mycol.delete_one({"PlayerId":event.source.user_id})
删除符合条件的多笔资料:
del_players = { "PlayerName": {"$regex": "^F"} } #删除所有 PlayerName 栏位中以 F 开头的资料 x = mycol.delete_many(del_players) print(x.deleted_count, "笔资料删除完毕")
当不给予 delete_many() 任何条件时,会删除资料表内所有资料
x = mycol.delete_many({}) print(x.deleted_count, "笔资料删除完毕")
查询
当不给予 find_one() 条件,则输出第一笔资料
x = mycol.find_one() print(x)
搜寻所有的资料
for x in mycol.find(): print(x)
搜寻所有资料的部分栏位,0为不显示,1为显示,除了 id 以外不可同时指定两个栏位分别为0 与 1:
for x in mycol.find({},{ "_id": 0, "PlayerName": 1, "Status": 1 }): print(x)
搜寻符合指定条件的栏位
mydoc = mycol.find({ "PlayerName": "Testname1" })
只回传指定数量的搜寻结果
myresult = mycol.find().limit(3)for x in myresult: print(x)
修改
只修改符合条件的第一笔资料
myquery = { "Status": "0" }newvalues = { "$set": { "Status": "1" } } mycol.update_one(myquery, newvalues)
修改符合条件的所有资料
myquery = { "Status": "0" }newvalues = { "$set": { "Status": "1" } } mycol.update_many(myquery, newvalues)