MongoDB資料庫

JJJhr發表於2024-07-05

MongoDB 的介紹

MongoDB 是一個開源的非關係型資料庫系統,採用 C++ 編寫,旨在處理大量資料儲存和高吞吐量的應用程式。MongoDB 使用 JSON 風格的文件儲存資料,具有高度的靈活性和效能。

主要特點:

  1. 非關係型資料庫:不採用傳統的關係型資料庫表格模型,而是使用文件儲存模型。
  2. 高效能:支援在叢集中水平擴充套件,能夠處理大規模的資料儲存和高併發訪問。
  3. 靈活的資料模型:文件儲存模型支援巢狀文件和陣列,適合儲存複雜的資料結構。
  4. 豐富的功能:提供豐富的查詢語言、支援多種索引、資料複製和故障恢復機制。

SQL 和 NoSQL 的區別

在關係型資料庫(SQL)和非關係型資料庫(NoSQL)之間,主要區別在於資料的組織方式和資料模型:

  • SQL 資料庫:採用表格模型,資料按照預定義的結構儲存,具有嚴格的一致性和事務支援。

    • 資料結構:資料庫 > 表 > 行 > 列
    • 例子:MySQL、PostgreSQL、Oracle
  • NoSQL 資料庫:採用多種資料模型,如文件儲存、鍵值對、列儲存和圖形資料庫,適用於資料結構較為靈活的場景。

    • 資料結構:資料庫 > 集合(Collection) > 文件(Document) > 欄位(Field)
    • 例子:MongoDB、Redis、Cassandra

MongoDB 的安裝

MongoDB 的安裝步驟:

  1. 下載 MongoDB 安裝包:從 MongoDB 官網下載對應版本的安裝包。
  2. 安裝 MongoDB:按照官方文件指引安裝 MongoDB。
  3. 配置 MongoDB:根據需要配置 MongoDB 的資料目錄、日誌檔案路徑等。
  4. 啟動 MongoDB 服務:啟動 mongod 程序以及可選的配置選項。

MongoDB 的簡單使用

本地測試啟動(功能受限)

在本地測試中,可以使用預設配置啟動 MongoDB:

# 啟動 MongoDB
mongod

# 連線 MongoDB Shell
mongo

生產方式啟動(完整內容)

在生產環境中,需要配置更多的引數,例如資料目錄、日誌輸出、認證等:

# 啟動 MongoDB(示例)
mongod --dbpath /path/to/data --logpath /path/to/log/mongod.log --fork

MongoDB 的資料庫操作和集合操作

MongoDB 中的操作以資料庫和集合為單位:

  • 資料庫操作

    # 切換資料庫
    use your_database_name
    
    # 顯示當前資料庫
    db
  • 集合操作

    # 建立集合
    db.createCollection("your_collection")
    
    # 檢視集合列表
    show collections

MongoDB 的資料型別

MongoDB 支援多種資料型別,包括字串、整數、浮點數、日期、陣列、巢狀文件等。

MongoDB 插入、查詢、修改和刪除資料

MongoDB 支援豐富的資料操作:

  • 插入資料

    db.collection_name.insertOne({ key: value });
  • 查詢資料

    db.collection_name.find({ key: value });
  • 修改資料

    db.collection_name.updateOne({ filter }, { $set: { key: new_value } });
  • 刪除資料

    db.collection_name.deleteOne({ filter });

MongoDB 的聚合管道

MongoDB 的聚合管道允許對資料進行多個階段的處理和轉換,如分組、排序、篩選等:

  • 分組管道

    db.collection_name.aggregate([
      { $group: { _id: "$key", total: { $sum: "$value" } } }
    ]);
  • 其他管道

    db.collection_name.aggregate([
      { $match: { key: value } },
      { $sort: { key: 1 } },
      { $skip: 10 },
      { $limit: 5 }
    ]);

MongoDB 索引和許可權管理

  • 索引:MongoDB 支援多種索引型別,如單欄位索引、複合索引、文字索引等。

    db.collection_name.createIndex({ key: 1 });
  • 許可權管理:MongoDB 支援建立和管理使用者及其許可權,保障資料安全性。

pymongo 使用

pymongo 是 Python 中操作 MongoDB 的官方驅動程式:

pip install pymongo

使用示例:

from pymongo import MongoClient

# 連線 MongoDB
client = MongoClient('mongodb://localhost:27017/')

# 獲取資料庫和集合
db = client.your_database_name
collection = db.your_collection_name

# 插入資料
data = {"key": "value"}
result = collection.insert_one(data)

# 查詢資料
query = {"key": "value"}
result = collection.find(query)

# 修改資料
update_query = {"key": "value"}
new_value = {"$set": {"key": "new_value"}}
result = collection.update_one(update_query, new_value)

# 刪除資料
delete_query = {"key": "value"}
result = collection.delete_one(delete_query)

相關文章