解決問題 MongoDB (2)

教學目標

主要解決如何在 Python 中使用 MongoDB 資料庫的問題。

重點概念

首先我們要如何在 Python 中使用 MongoDB 資料庫,主要是透過 pymongo 模組進行操作,在此之前我們必須先了解 MongoDB 與 SQL 的名詞和概念對應,請參考下表。

SQL 名詞和概念 MongoDB 名詞和概念
Database Database
Table Collection
Row Document
Column Field
Index Index
primary key primary key

接著我們若要使用 MongoDB 資料庫,則必須先了解基本 CRUD 也就是新增、讀取、更新和刪除的操作,但是對於資料庫操作大多數人主要還是熟悉 SQL 語法,所以我們透過 SQL 進行對應,以利快速了解使用。

建立資料表

SQL 語法

1
2
3
4
5
6
7
8
CREATE TABLE people (
id MEDIUMINT NOT NULL
AUTO_INCREMENT,
user_id Varchar(30),
age Number,
gender char(1),
PRIMARY KEY (id)
)

MongoDB 語法

1
2
3
4
5
6
db.createCollection("people")
db.people.insertOne( {
user_id: "Winnie",
age: 25,
gender: "F"
} )

建立資料

SQL 語法

1
2
3
4
5
6
INSERT INTO people(user_id,
age,
gender)

VALUES ("Jack",
25,
"M")

MongoDB 語法

1
2
3
db.people.insertOne(
{ user_id: "Jack", age: 25, status: "M" }
)

查詢資料

SQL 語法

1
2
3
SELECT user_id, status
FROM people
WHERE gender= "F"

MongoDB 語法

1
2
3
4
db.people.find(
{ gender: "F" },
{ user_id: 1, status: 1, _id: 0 }
)

更新資料

SQL 語法

1
2
3
UPDATE people
SET age = age + 1
WHERE gender = "M"

MongoDB 語法

1
2
3
4
db.people.updateMany(
{ gender: "M" } ,
{ $inc: { age: 1 } }
)

刪除資料

SQL 語法

1
2
DELETE FROM people
WHERE status = "M"

MongoDB 語法

1
db.people.deleteMany( { gender: "M" } )

再來我們了解 MongoDB 基本的 CRUD 操作之後,此時就能夠開始在 Python 中透過 pymongo 模組使用 MongoDB 資料庫。

安裝 pymongo 模組

1
$ pip install pymongo

建立 MongoDB 資料庫連線

1
2
from pymongo import MongoClient
client = MongoClient('localhost', 27017)

取得 MongoDB 資料庫實體

1
db = client['test-database']

取得 MongoDB 資料庫集合

1
collection = db.test_collection

新增文件至資料庫中

1
2
3
4
5
posts = db.posts
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"]}
posts.insert_one(post)

取得資料庫中文件內容

1
2
import pprint
pprint.pprint(posts.find_one({"author": "Mike"}))

更新資料庫中文件內容

1
2
posts = db.posts
posts.update_one({"_id":_id},{"$set": {"text": "My first blog post! (Update)"}})

刪除資料庫中文件內容

1
2
posts = db.posts
posts.delete_one({"_id":_id})

最後我們了解如何在 Python 中透過 pymongo 模組使用 MongoDB 資料庫之後,下一步就是開始撰寫適當的 Python 程式語言針對不同的問題進行解決。

總結目前有許多開源專案皆是採用 MongoDB 資料庫為預設資料庫,此時我們就需要了解如何使用 MongoDB 資料庫,但是 MongoDB 資料庫的概念與 SQL 的概念有些不同必須先行了解,才能夠有效進行後續的管理與應用。

相關資源