12 MongoDB 資料庫的簡單使用和配置
這節課我們主要是學習 MongoDB 資料庫的基本操作和使用,爬蟲在爬取到資料之後可以把資料需要把資料保留下來供其他工作人員去使用。如果資料量不是很大的話可以儲存在檔案中,但是如果資料量很大那麼儲存在檔案中就非常困難,先不說儲存完資料之後的檔案大小非常大,很佔空間,單就是往檔案中寫入資料的速度就很慢。
但是幸好我們還有另外一個選擇,那就是將爬取到的資料存入資料庫中。因為現在 JSON 資料格式的流行,我們一般都會選擇 JSON 來作為資料的傳輸格式,所以非常適合 JSON 資料儲存的 MongoDB 資料庫就獲得了我們爬蟲程式設計師的青睞,所以這節課我們就來學習下 MongoDB 的:
- MongoDB基本概念;
- MongogDB主要特點;
- MongoDB常見操作;
- Python操作MongoDB。
通過本節課的學習你會掌握:
-
MongoDB 基本操作,能夠操作建立資料庫,並且進行簡單的 CURD 功能。
-
使用 Python 進行資料庫的 CURD.
1. MongoDB 簡介
MongoDB 是一個文件型資料庫,由 C++ 編寫,功能豐富,支援複雜的資料型別,支援資料建立索引,效能高,容易使用,方便部署。
主要特點如下:
- 面向集合儲存,方便儲存物件型別的資料;
- 支援語言豐富,Python,Java,C++ 等語言;
- 支援完全索引;
- 檔案儲存等格式為 JSON。
傳統的關係型資料庫以 MySQL 為例,一般是由資料庫,表,記錄三個層次組成,MongoDB 是由資料庫,集合,文件物件組成。下表列出了 MongoDB 與 MySQL 的對比:
MongoDB | MySQL | 描述 |
---|---|---|
database | database | 資料庫 |
table | collection | 資料庫表/集合 |
row | document | 資料庫行/文件 |
column | field | 資料欄位列/域 |
index | index | 索引 |
index | index | 索引 |
2. MongoDB 資料庫的安裝
MongoDB 的安裝方式讀者可以自行去查詢,這裡就不再贅述了。通過以下方式測試資料庫是否安裝執行成功:開啟瀏覽器,輸入如下網址,成功後,會返回如下結果:
下面我們來看下 MongoDB 的基本操作。
2.1 顯示所有資料庫
要檢視本地所有的資料庫需要執行下面的命令:
show dbs
效果展示:
2.3 建立一個集合
要檢視本地所有的資料庫需要執行下面的命令:
db.createCollection("test")
效果展示:
2.4 往集合新增一條資料
要檢視本地所有的資料庫需要執行下面的命令:
db.test.insert({"name":"python", "version":3})
db.test.insert({"name":"java","version":1.8})
效果展示:
2.5 查詢集合新增的資料
要檢視本地所有的資料庫需要執行下面的命令:
db.test.find()
效果展示:
2.6 更改集合裡的資料
要檢視本地所有的資料庫需要執行下面的命令:
db.test.update({"_id": ObjectId("5e6b448452df331867ae1a9f")},{$set:{"version":2}})
效果展示:
2.7 刪除集合裡的資料
要檢視本地所有的資料庫需要執行下面的命令:
db.test.deleteOne({"name":"java"})
效果展示:
3. 使用 pymongo 操作 MongoDB 資料庫
第二部分中我們講述瞭如何操作 MongoDB 資料庫,但是在爬蟲開發中我們沒辦法使用命令來操作 MongoDB 資料庫。我們就要使用 Python 語言來操作 MongoDB 資料庫,那麼如何使用 Python 來操作資料庫呢?
這個時候我們就需要使用 pymongo 包了。通過這個第三方的包,我們才可以通過 Python 語言來控制 MongoDB 的操作。
首先安裝 pymongo 包:
pip install pymongo
效果展示:
3.1 連線資料庫,建立資料庫和集合
在 pymongo 安裝完成之後,我們接下來通過 Python 來連線本地和遠端的 MongoDB 資料庫。
from pymongo import MongoClient
#建立連線
client = MongoClient('mongodb://localhost:27017/')
#建立資料庫new_db_for_py
db = client['new_db_for_py']
#建立集合new_data_set
collection = db.new_data_set
效果如下:
3.2 插入資料
插入兩組資料,分別為 Tony 和 Jack:
data = {"name":"Tony", "age":18, "gender":"male"}
data = {"name":"Jack", "age":30, "gender":"male"}
效果如下:
3.3 查詢資料
尋找名字為 Tony 的資料:
collection.find_one({"name":"Tony"})
效果如下:
3.4 更改資料
Tony = collection.find_one(condition)
Tony['age'] = 55
collection.update(condition, Tony)
效果如下:
3.5 刪除資料
collection.remove({"name":"Tony"})
效果如下:
再次查詢Tony,效果如下:
查詢為空,說明 Tony 的資料刪除成功!
4. 小結
這一小節,我們學會了 MongoDB 的基本操作,以及在 Python 中的使用。
如果檔案不是很大,持久化儲存可以使用 TXT 或者 CSV 格式,寫入和讀取都比較方便。但是,當資料量很大的時候,而且需要儲存 JSON 等格式的時候,推薦使用 MongoDB 進行持久化的儲存。