時(shí)間:2024-03-26 14:37作者:下載吧人氣:34
MongoDB 是當(dāng)下最流行的NoSQL數(shù)據(jù)庫之一,能夠存儲各種類型的數(shù)據(jù)??梢哉f,對于那些想要入門NoSQL、學(xué)習(xí)MongoDB的開發(fā)者來說,掌握MongoDB是必不可少的技能之一。那么,在8天里,怎么樣才能玩轉(zhuǎn) MongoDB呢?
首先,啟動MongoDB。在開始學(xué)習(xí) MongoDB之前,首先要安裝它,可以在 MongoDB的官網(wǎng)上下載最新的版本,然后運(yùn)行適用于你的操作系統(tǒng)的安裝程序。安裝完成后,從命令行或者其他客戶端輸入相應(yīng)的指令可以運(yùn)行 MongoDB的實(shí)例,例如:
cd C:/mongo
mongod.exe
第二天,我們需要學(xué)習(xí)MongoDB的基本語句。以文檔類型為主的MongoDB,以BSON(二進(jìn)制文檔格式)存儲數(shù)據(jù),數(shù)據(jù)可以分配至collection(集合)中。MongoDB提供了CRUD操作,可以通過Regular Expression(正則表達(dá)式)來查找符合條件的數(shù)據(jù),例如:
// Create
db.profiles.insert({name: “John”, age: 25, job: “Developer”})
// Read
db.profiles.find({name: “John”})
// Update
db.profiles.update({name: “John”}, {$set: {age: 26}})
// Delete
db.profiles.remove({name: “John”})
第三天,我們需要學(xué)習(xí)如何使用MongoDB常用查詢操作。有時(shí),文檔也需要符合一定的規(guī)則才能被視為有效,如果更新時(shí)不符合規(guī)則,這往往會導(dǎo)致錯(cuò)誤。在MongoDB中,可以使用文檔約束(Schema Validation)來確保文檔是正確的。另外,也可以使用Aggregate函數(shù)對數(shù)據(jù)進(jìn)行匯總:
// Schema Validation
db.createCollection(“profiles”, {
validator: {$and: [
{name : {$type: “string”}
},
{age : {$type: “int”, $gt:20, $lt:30}}
]
}
});
// Aggregation
db.collection.aggregate([
{$group:{_id:”$name”,
total:{$sum: “$price”}}
}
]);
第四天,介紹了MongoDB的使用場景。隨著MongoDB的普及,現(xiàn)在幾乎可以在任何領(lǐng)域使用該數(shù)據(jù)庫,只要數(shù)據(jù)模型適合NoSQL格式。有些企業(yè)用MongoDB來存儲文檔或能提升安全的報(bào)表;而有的游戲公司則會使用它來存儲從玩家的游戲前進(jìn)和技能升級中獲得的所有數(shù)據(jù)。MongoDB也可以用來存儲一些你認(rèn)為可能會受到攻擊的敏感數(shù)據(jù),因?yàn)镸ongoDB的自定義權(quán)限可以讓每個(gè)用戶對該數(shù)據(jù)都有細(xì)粒度的控制。
第五、六天,詳細(xì)介紹了MongoDB如何實(shí)現(xiàn)安全性。由于MongoDB存儲各種數(shù)據(jù),因此需要考慮保護(hù)數(shù)據(jù)的安全性,例如用戶認(rèn)證登錄、數(shù)據(jù)加密等,可以很好地實(shí)現(xiàn)安全措施。用戶可以使用CRAM-CHALLENGE/RESPONSE、TLS/SSL、X.509證書的驗(yàn)證機(jī)制登錄MongoDB,可以使用加密機(jī)制來存儲數(shù)據(jù),例如AES加密和Hashing算法:
// User authentication
// using CRAM-CHALLENGE/RESPONSE
db.createUser({
user: “testUser”,
pwd: “testpassword”,
mechanisms: [“CRAM-CHALLENGE”]
});
// Data Encryption
// using AES encryption
db.collection.find({
encryptedField: {$encrypt: {
keyid: “myAESKey”,
algorithm: “AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic”,
encryptValue: “{‘encoded_data:’ ‘a(chǎn)bc123’}”
}
});
第七、八天,學(xué)習(xí)MongoDB在大型應(yīng)用中的實(shí)施和部署??梢越柚鶰ongoDB實(shí)施數(shù)據(jù)庫水平擴(kuò)展或垂直擴(kuò)展,實(shí)現(xiàn)大規(guī)模數(shù)據(jù)庫的復(fù)雜部署,同時(shí)還可以針對不同的讀/寫場景進(jìn)行復(fù)制和冗余。可以使用 MongoDB Atlas來管理數(shù)
網(wǎng)友評論