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 的對比:
MySQL | MongoDB | 描述 |
---|---|---|
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 進行持久化的存儲。