MongoDB是一個基于分布式文件存儲的開源數據庫系統,由C++語言編寫。它旨在為WEB應用提供可擴展的高性能數據存儲解決方案。MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。
| 特性 | MongoDB | 傳統關系型數據庫 |
|---|---|---|
| 數據模型 | 文檔模型 | 表模型 |
| 模式 | 動態模式 | 靜態模式 |
| 擴展性 | 水平擴展 | 垂直擴展 |
| 查詢語言 | 豐富的查詢語言 | SQL |
| 事務支持 | 支持多文檔事務 | 支持事務 |
| 性能 | 高性能,適合大量數據 | 適合中小規模數據 |
| 數據一致性 | 最終一致性 | 強一致性 |
| 適用場景 | 大數據、實時分析、內容管理等 | 事務處理、復雜查詢等 |
在安裝MongoDB之前,需要確保系統滿足以下要求:
下載MongoDB安裝包:
安裝MongoDB:
配置環境變量:
C:\Program Files\MongoDB\Server\5.0\bin)添加到系統的PATH環境變量中。啟動MongoDB:
mongod啟動MongoDB服務。27017端口。添加MongoDB的APT源:
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
sudo apt-get update
安裝MongoDB:
sudo apt-get install -y mongodb-org
啟動MongoDB:
sudo systemctl start mongod
設置開機自啟動:
sudo systemctl enable mongod
使用Homebrew安裝MongoDB:
brew tap mongodb/brew
brew install mongodb-community
啟動MongoDB:
brew services start mongodb-community
驗證安裝:
mongo --version
MongoDB的配置文件通常位于/etc/mongod.conf(Linux)或C:\Program Files\MongoDB\Server\5.0\bin\mongod.cfg(Windows)。以下是一些常見的配置項:
127.0.0.1,可以設置為0.0.0.0以允許遠程訪問。27017。/data/db(Linux)或C:\data\db(Windows)。啟動MongoDB:
sudo systemctl start mongod啟動MongoDB。mongod啟動MongoDB。停止MongoDB:
sudo systemctl stop mongod停止MongoDB。mongod進程并結束它。啟用身份驗證:
security:
authorization: enabled
創建用戶:
mongo命令連接到MongoDB,執行以下命令創建用戶:
use admin
db.createUser({
user: "admin",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
})
連接MongoDB:
mongo -u admin -p password --authenticationDatabase admin
備份數據庫:
mongodump命令備份數據庫:
mongodump --db mydb --out /backup/mydb
恢復數據庫:
mongorestore命令恢復數據庫:
mongorestore --db mydb /backup/mydb
創建數據庫:
use mydb
查看數據庫:
show dbs
刪除數據庫:
db.dropDatabase()
創建集合:
db.createCollection("mycollection")
查看集合:
show collections
刪除集合:
db.mycollection.drop()
插入文檔:
db.mycollection.insert({ name: "Alice", age: 25 })
查詢文檔:
db.mycollection.find({ name: "Alice" })
更新文檔:
db.mycollection.update({ name: "Alice" }, { $set: { age: 26 } })
刪除文檔:
db.mycollection.remove({ name: "Alice" })
創建索引:
db.mycollection.createIndex({ name: 1 })
查看索引:
db.mycollection.getIndexes()
刪除索引:
db.mycollection.dropIndex({ name: 1 })
條件查詢:
db.mycollection.find({ age: { $gt: 20 } })
排序查詢:
db.mycollection.find().sort({ age: -1 })
分頁查詢:
db.mycollection.find().skip(10).limit(5)
db.mycollection.aggregate([
{ $match: { age: { $gt: 20 } } },
{ $group: { _id: "$name", total: { $sum: 1 } } }
])
復制集是MongoDB實現高可用性的核心機制。一個復制集通常包含一個主節點(Primary)和多個從節點(Secondary)。主節點負責處理寫操作,從節點負責復制主節點的數據并提供讀操作。
配置復制集:
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "localhost:27017" },
{ _id: 1, host: "localhost:27018" },
{ _id: 2, host: "localhost:27019" }
]
})
查看復制集狀態:
rs.status()
分片是MongoDB實現水平擴展的核心機制。通過分片,可以將數據分布到多個服務器上,從而實現海量數據的存儲和處理。
配置分片:
sh.addShard("shard1/localhost:27018")
sh.addShard("shard2/localhost:27019")
啟用分片:
sh.enableSharding("mydb")
分片集合:
sh.shardCollection("mydb.mycollection", { name: 1 })
MongoDB支持多文檔事務,可以在一個事務中執行多個操作,并保證這些操作的原子性。
開啟事務:
session.startTransaction()
提交事務:
session.commitTransaction()
回滾事務:
session.abortTransaction()
MongoDB支持多種數據壓縮算法,可以有效減少存儲空間的使用。
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 1
journalCompressor: snappy
directoryForIndexes: true
collectionConfig:
blockCompressor: snappy
MongoDB支持數據加密,可以有效保護數據的安全性。
security:
enableEncryption: true
encryptionKeyFile: /path/to/keyfile
mongostat、mongotop等,發現故障原因。MongoDB Atlas是MongoDB官方提供的云服務,支持自動備份、監控、報警等功能,適合中小型企業使用。
MongoDB Compass是MongoDB官方提供的圖形化管理工具
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。