MongoDB從零開始詳細教程 核心概念與原理 環境搭建 基礎操作 一、核心概念與原理 1. 核心組件 2. MongoDB vs 關系型數據庫 二、環境搭建(Windows/Linux/CentOS) 1. Windows安裝 2. CentOS安裝 3. 連接驗證 三、基礎操作(CRUD) 四、高級特性與優化 1. 索引優化 2. 聚合管道(Aggregation) 3. 分片集群與副本集 五、編程語言集成(Node.js/Python) 1. Node.js操作MongoDB 2. Python操作MongoDB(PyMongo) 六、運維與監控 學習路徑
一、核心概念與原理
1. 核心組件
概念 作用 類比關系型數據庫 文檔(Document) 數據存儲基本單元,采用BSON格式(如JSON) 表中的一行數據 集合(Collection) 文檔的容器,無需固定結構(Schema-less) 數據表(Table) 數據庫(Database) 多個集合的命名空間容器 數據庫(Database)
2. MongoDB vs 關系型數據庫
特性 MongoDB MySQL 數據結構 靈活(動態Schema) 固定結構(需預定義字段) 擴展方式 水平擴展(分片集群) 垂直擴展(升級硬件) 查詢語言 類JavaScript語法 SQL 適用場景 非結構化數據、快速迭代、高并發讀寫 強事務、復雜關聯查詢
BSON優勢:二進制JSON,支持日期、二進制流等類型,存儲效率高于JSON。
二、環境搭建(Windows/Linux/CentOS)
1. Windows安裝
2. CentOS安裝
sudo mkdir -p /data/db
sudo chown -R mongodb:mongodb /data/db
sudo yum install -y mongodb-org
sudo systemctl start mongod
3. 連接驗證
mongo
> db.version( )
> show dbs
三、基礎操作(CRUD)
1. 數據庫與集合操作
use testdb
db. createCollection ( "users" )
db. users. drop ( )
db. dropDatabase ( )
2. 文檔增刪改查
db. users. insertOne ( { name: "Alice" , age: 25 } )
db. users. insertMany ( [ { name: "Bob" } , { name: "Charlie" } ] )
db. users. find ( )
db. users. find ( { age: { $gt: 20 } } )
db. users. findOne ( { name: "Alice" } )
db. users. updateOne ( { name: "Alice" } , { $set: { age: 26 } } )
db. users. updateMany ( { } , { $inc: { age: 1 } } )
db. users. deleteOne ( { name: "Bob" } )
db. users. deleteMany ( { age: { $lt: 18 } } )
四、高級特性與優化
1. 索引優化
索引類型 創建命令 適用場景 單鍵索引 db.users.createIndex({age: 1}) 頻繁按age查詢 復合索引 db.users.createIndex({name:1, age:-1}) 多字段排序或條件查詢 TTL索引 db.logs.createIndex({time:1}, {expireAfterSeconds:3600}) 自動清理過期數據(如日志)
2. 聚合管道(Aggregation)
db. users. aggregate ( [ { $group: { _id: "$age" , count: { $sum: 1 } } } , { $sort: { count: - 1 } }
] )
3. 分片集群與副本集
副本集:一主多從架構,主節點處理寫請求,從節點提供讀負載均衡,自動故障轉移。 分片集群:通過分片鍵(如user_id)將數據分布到多臺機器,解決海量數據存儲問題。
五、編程語言集成(Node.js/Python)
1. Node.js操作MongoDB
const { MongoClient } = require ( 'mongodb' ) ;
const uri = "mongodb://localhost:27017" ; async function run ( ) { const client = new MongoClient ( uri) ; await client. connect ( ) ; const db = client. db ( 'testdb' ) ; const users = db. collection ( 'users' ) ; await users. insertOne ( { name: "Eva" , role: "admin" } ) ; const result = await users. find ( { role: "admin" } ) . toArray ( ) ; console. log ( result) ;
}
run ( ) ;
2. Python操作MongoDB(PyMongo)
from pymongo import MongoClientclient = MongoClient( 'mongodb://localhost:27017' )
db = client[ 'testdb' ]
users = db[ 'users' ]
users. insert_many( [ { "name" : "Tom" , "score" : 85 } , { "name" : "Jerry" , "score" : 92 }
] )
results = users. find( { "score" : { "$gt" : 90 } } )
for doc in results: print ( doc)
六、運維與監控
1. 備份與恢復
mongodump --db testdb --out /backup/
mongorestore --db testdb /backup/testdb/
2. 性能監控命令
db.serverStatus( )
db.currentOp( )
db.stats( )
3. 安全配置
security:authorization: enabled
use admin
db.createUser( { user: "admin" ,pwd: "password" ,roles: [ "root" ]
} )
學習路徑
新手階段:掌握CRUD操作 + 理解BSON文檔模型 進階方向: 索引設計優化(避免全表掃描) 聚合管道處理復雜分析 分片集群應對海量數據 生產實踐: 副本集保障高可用 編程語言集成(Node.js/Python優先)
官方資源: - MongoDB中文手冊 - MongoDB中文社區 工具推薦: - 可視化工具:MongoDB Compass - 性能分析:mongostat、mongotop 按此路徑學習,可逐步從入門到精通,應對企業級應用開發與運維需求。