Python MongoDB 安裝及基本操作(Win10)

Python可用於資料庫應用程序。最受歡迎的NoSQL資料庫之一是MongoDB
MongoDB將資料存儲在類似JSON的文檔中,這使得資料庫非常靈活且可擴展。

下載MongoDB

官網下載:戳我

選擇版本跟系統點擊 Download下載。

ihWZnnr Python MongoDB 安裝及基本操作(Win10)

安裝MongoDB

按個人喜好選擇安裝模式,我是選擇「Complete」:

Python MongoDB 安裝及基本操作(Win10)
OPMlXX7 Python MongoDB 安裝及基本操作(Win10)

安裝完後MongoDB資料夾內會有bin、data、log三個資料夾:

Python MongoDB 安裝及基本操作(Win10)

進入存放MongoDB的資料夾位置(C:\Program Files\MongoDB\Server\4.2) 新增mongo.conf檔案,內容為下方程式碼:

# 資料庫檔案路徑
dbpath = C:\Program Files\MongoDB\Server\4.2\data
# 記錄檔輸出檔案路徑
logpath = C:\Program Files\MongoDB\Server\4.2\log\mongo.log
# 錯誤記錄檔採用追加模式
logappend = true
# 啟用記錄檔,預設啟用
journal = true
# 這個選項可以過濾掉一些無用的記錄檔資訊,若需要偵錯使用,則設定為false
quiet = true
# 通訊埠編號,預設為27017
port = 27017

打開 cmd 進入 C:\Program Files\MongoDB\Server\4.2\bin 然後輸入下方指令:

mongod --config "C:\Program Files\MongoDB\Server\4.2\mongo.config" --install

開啟「服務」(C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools)檢查MongoDB是否已經被登入到本機服務中:

5tH5U4w Python MongoDB 安裝及基本操作(Win10)

打開瀏覽器連接 http://127.0.0.1:27017/ ,如果出現下方訊息就代表安裝成功。

It looks like you are trying to access MongoDB over HTTP on the native driver port.

20200510045857 Python MongoDB 安裝及基本操作(Win10)

MongoDB視覺化工具-Robo3T

安裝Robo3T:官方網站

在首頁找到 Download Robo 3T 按鈕,根據電腦系統選擇下載:

20200510050045 Python MongoDB 安裝及基本操作(Win10)

建立本地連接

安裝完畢啟動Robo 3T (我這邊示範是用Studio 3T,兩個差別在於商業付費還是免費,Robo 3T是開源免費的,請使用Robo 3T。),選擇Create a new connection 建立本地連線:

WEuAKVN Python MongoDB 安裝及基本操作(Win10)

建立一個Server為localhost , Port為27017 的本地連線:

4eLMV5W Python MongoDB 安裝及基本操作(Win10)

創建好後選擇「Connect」連接:

aNkWB0s Python MongoDB 安裝及基本操作(Win10)

新增資料庫

在本地連接上按「右鍵-Add Database」新增一個資料庫叫 TEST:

Python MongoDB 安裝及基本操作(Win10)
LZnDgAM Python MongoDB 安裝及基本操作(Win10)

建立集合

在 TEST 資料庫上按「右鍵-Add Collection」 建立集合:

Python MongoDB 安裝及基本操作(Win10)

集合名稱設為 user,自行判斷是否要勾選新增 id 主鍵:

Zl51RSB Python MongoDB 安裝及基本操作(Win10)

PyMongo

安裝PyMongo

Python需要MongoDB驅動程序才能訪問MongoDB資料庫。在本教程中,我們將使用MongoDB驅動程序”PyMongo”。

pip install pymongo

安裝後進入 python 並引入pymongo 接著輸入指令確認是否安裝成功

$ python
>> import pymongo
>> pymongo.__version__
'3.10.1'

連接MongoDB資料庫

首先引入pymongo,接著選擇任一方式與資料庫做連接:

import pymongo
# 方法一
client = pymongo.MongoClient()
# 方法二
client = pymongo.MongoClient('localhost',27017)
# 方法三
client = MongoClient('mongodb://localhost:27017/')
# 連接TEST資料庫
db = client['TEST']
# 連接user集合, 若不存在則新增
user_collection = db.user

所有儲存在集合中的資料都是BSON格式,BSON是一種類似JSON的二進位形式的儲存格式。

新增資料

單筆資料新增的是user_info ,該資料是一個字典資料結構:

import pymongo
import datetime
import re
client = pymongo.MongoClient()
db = client['TEST']
user_collection = db.user
user_info = {
"_id":100,
"author":"小黃",
"text":"Python",
"tags":["python","mongodb","pymongo"],
"date":datetime.datetime.utcnow()
}
#使用insert_one單筆新增資料,insert_id取得寫入後的id
#新增資料時若不填_id則會自動增加
user_id = user_collection.insert_one(user_info).inserted_id
print("user id is ", user_id)

批次增加是user_infos,該資料是一個字典資料組成的清單:

# 批次增加
user_infos = [{
"_id":101,
"author":"小黃",
"text":"Python",
"tags":["python","mongodb","pymongo"],
"date":datetime.datetime.utcnow()
},{
"_id":102,
"author":"小黃_A",
"text":"Python_A",
"tags":{"db":"MongoDB","lan":"Python","modle":"Pymongo"},
"date":datetime.datetime.utcnow()
}]
user_id = user_collection.insert_many(user_infos).inserted_ids
print("user id is ", user_id)

新增資料分別由 insert_one 和 insert_many 方法實現,資料新增完後可使用inserted_id 或 inserted_ids 傳回增加後所自動產生的 id 內容。

2YgrKjv Python MongoDB 安裝及基本操作(Win10)
1QETNCb Python MongoDB 安裝及基本操作(Win10)

更新資料

上方新增後會有重複的小黃,我們試著將id為101的資料改為小黑。

update_one() 方法的第一個參數是一個查詢對象,用於定義要更新的文檔。
注意:如果查詢找到多個記錄,則更新第一個記錄。

若查詢對象為空可以使用下方程式碼:

newvalues = { "$set": { "author": "小黑" ,"text": "更新資料" } }
user_collection.update_one({}, newvalues)

指定查詢對象寫法:

myquery = { "_id":101}
newvalues = { "$set": { "author": "小黑" ,"text": "更新資料" } }
user_collection.update_one(myquery, newvalues)

$set 用來指定一個鍵的值,若這個鍵不存在則建立它,若存在則執行更新。

idv4TLG Python MongoDB 安裝及基本操作(Win10)

:要更新所有符合查詢條件的資料,可以使用update_many()方法。

查詢資料

要從MongoDB中的集合中選擇數據,我們可以使用 find_one() 方法。該find_one()方法返回選擇中的第一個匹配項。而 find() 方法則返回選擇中的所有匹配項。第一個參數是查詢對象。

find_value = user_collection.find({"_id":102})
print(list(find_value))
# AND條件查詢
find_value = user_collection.find({
"$and":[{"_id":102},{"author":"小黃_A"}]
})
print(list(find_value))
# OR條件查詢
find_value = user_collection.find({
"$or":[{"author":"小黃"},{"author":"小黃_A"}]
})
print(list(find_value))
DgGEpTI Python MongoDB 安裝及基本操作(Win10)

還有其他可用的條件操作符:$lt小於 $lte小於或等於 $gt大於 $gte大於或等於 $in符合範圍內
$nin範圍之外 … 有興趣可以自行研究。

刪除資料

可以使用 delete_one() 或 delete_many() 方法來刪除資料:

user_collection.delete_one({"_id":102})

刪除所有author 開頭為”小” 的值:

myquery = { "author": {"$regex": "^小"} }
user_collection.delete_many(myquery)

刪除所有資料:

user_collection.delete_many({})

更多可以參考W3School的教程,個人認為算是滿完整了。

0 0 評分數
Article Rating
訂閱
通知
guest

0 Comments
在線反饋
查看所有評論