連接到對應的資料庫與資料表:
import pymongo
myclient = pymongo.MongoClient('mongodb+srv://<username>:<password>@cluster0.4ejzf.gcp.mongodb.net/test') # 要連結到的 connect string
mydb = 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)