版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
mongodb課程講義(二)mongodb開發(fā)基礎(chǔ)lison老師:3325521094單機安裝12快速入門3查詢目錄
ONTENTSC4更新5安全6其他命令01MongoDB安裝官網(wǎng)下載安裝介質(zhì):,選擇適當(dāng)?shù)陌姹?,這里以linux版本為例;解壓到系統(tǒng)某路徑,tar-xvzfmongodb-linux-x86_64-rhel70-3.4.10.tgz并在安裝目錄創(chuàng)建data目錄,以及l(fā)ogs目錄和logs/mongodb.log文件使用vim在mongodb的bin目錄創(chuàng)建mongodb的配置文件,如:vimbin/mongodb.conf,mongodb.conf內(nèi)容請見下一頁課件;編寫shell腳本,命名為start-mongodb.sh,腳本內(nèi)容如下:nohup./mongod-fmongodb.conf&使用start-mongodb.sh啟動mongodb實例,如:./start-mongodb使用mongoClient進行測試,通過restAPI地址測試(端口加1000)02配置文件storage:dbPath:"/usr/local/apache/mongoDB/mongodb-linux-x86_64-rhel70-3.4.10/data"systemLog:destination:filepath:"/usr/local/apache//mongoDB/mongodb-linux-x86_64-rhel70-3.4.10/logs/mongodb.log"net:port:27022http:RESTInterfaceEnabled:trueprocessManagement:fork:falsemongoDB配置文件參數(shù)詳解單機安裝12快速入門3查詢目錄
ONTENTSC4更新5安全6其他命令01數(shù)據(jù)結(jié)構(gòu)介紹{"_id":ObjectId("59f938235d93fc4af8a37114"),"username":“l(fā)ison","country":"in11digo","address":{"aCode":"郵編","add":"d11pff"},"favorites":{"movies":["殺破狼2","1dushe","雷神1"],"cites":["1sh","1cs","1zz"]},"age":18,"salary":NumberDecimal("2.099"),"lenght":1.79}人員信息02需求描述新增2人刪除deletefromuserswhereusername=‘lison’deletefromuserswhereage>8andage<25修改
updateuserssetage=6whereusername=lison'updateuserssetfavorites.moviesadd"小電影2","小電影3"wherefavorites.citeshas"東莞"查詢select*fromuserswherefavorites.citeshas"東莞"、"東京"select*fromuserswhereusernamelike'%s%'and(country=Englishorcountry=USA)03快速入門我們學(xué)習(xí)的目標(biāo)是什么?直觀感受mongoDB的魅力mongo開發(fā)入門(原生、spring)開發(fā)框架版本選擇mongoDB數(shù)據(jù)類型全解析對nosql的理念有初步的認識04直觀感受mongoDB?客戶端&
圖形化界面mongoDB自帶的命令客戶端mongomongoDB自帶的圖形化客戶端:CompassCommunity第三方mongoDB的圖形化客戶端:robomongo產(chǎn)品查看、新增和刪除db和collections對doccument的增刪改查支持構(gòu)建和運行腳本查看查詢計劃管理索引版本支持Compasscommunity支持支持,比較人性化不支持支持支持3.6robomongo支持支持支持不支持支持3.405原生java客戶端<dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.5.0</version></dependency>pom文件Tips:3.5.0最新版本加入了對pojo的支持;3.5.0最新版本增強對json的支持;mongodb原生客戶端支持兩種document和pojo模式的開發(fā);06Spring-data-mongodb客戶端<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId><version>1.10.9.RELEASE</version></dependency>pom文件Tips:spring-data-mongodb的最新版本是2.x.x,如果是spring為5.0版本以上的才推薦使用;spring-data-mongodb的1.10.9版本基于spring4.3.x開發(fā),但是默認依賴的mongodb驅(qū)動為2.14.3,可以將mongodb的驅(qū)動設(shè)置為3.5.0的版本,兼容性待進一步測試;spring-data-mongodb的1.10.9可能會支持3.5.0版本mongodb驅(qū)動;spring-data-mongodb一般使用pojo的方式開發(fā);02需求描述刪除deletefromuserswhereusername=‘lison’db.users.deleteMany({"username":"lison"})deletefromuserswhereage>8andage<25db.users.deleteMany({“$and”:[{“age”:{“$gt”:8}},{“age”:{“$lt”:25}}]})修改
updateuserssetage=6whereusername=lison'db.users.updateMany({"username":"lison"},{"$set":{"age":6}},true)updateuserssetfavorites.moviesadd"小電影2","小電影3"wherefavorites.citeshas"東莞“db.users.updateMany({"favorites.cites":"東莞"},{"$addToSet":{"favorites.movies":{"$each":["小電影2","小電影3"]}}},true)02需求描述查詢select*fromuserswherefavorites.citeshas"東莞"、"東京“db.users.find({"favorites.cites":{"$all":["東莞","東京"]}})select*fromuserswhereusernamelike'%s%'and(country=Englishorcountry=USA)db.users.find({"$and":[{"username":{"$regex":".*s.*"}},{"$or":[{"country":"English"},{"country":"USA"}]}]})07開發(fā)框架版本選擇java驅(qū)動與mongoDB兼容性08開發(fā)框架版本選擇java驅(qū)動與jdk的兼容性Tips:java驅(qū)動優(yōu)先使用3.5以上版本09開發(fā)框架版本選擇springdatamongo與javamongo驅(qū)動兼容性springmongodb版本spring版本支持jdk版本支持mongodbserver支持默認的mongoDBjava驅(qū)動版本SpringDataMongoDB1.x4.3.13.RELEASE以上jdk1.6以上2.6版本以上,3.4以下2.14.3SpringDataMongoDB2.x5.0.2.RELEASE以上jdk1.8以上2.6版本以上,Tips:SpringDataMongoDB1.x與2.x之間區(qū)別比較大,請點擊我想要使用springmongoDB2.x的新API,同時想使用3.5.0以上版本的java驅(qū)動?
spring-data-mongodb的1.10.9版本mongodb3.5spring4.3.13以上10mongoDB數(shù)據(jù)類型數(shù)據(jù)類型示例說明null{"key":null}null表示空值或者不存在該字段布爾{"key","true"}
{"key","false"}布爾類型表示真或者假32位整數(shù){"key":8}存儲32位整數(shù),但再shell界面顯示會被自動轉(zhuǎn)成64位浮點數(shù)64位整數(shù){"key":{"floatApprox":8}}存儲64位整數(shù),floatApprox意思是使用64位浮點數(shù)近似表示一個64位整數(shù)64位浮點數(shù){"key":8.21}存儲64位整數(shù),shell客戶端顯示的數(shù)字都是這種類型;字符串{"key":"value"}
{"key":"8"}UTF-8格式對象ID{"key":ObjectId()}12字節(jié)的唯一ID日期{"key":newDate()}代碼{"key":function(){}}二進制數(shù)據(jù)主要存儲文件未定義{"key":undefined}值沒有定義,null和undefined是不同的數(shù)組{"key":[16,15,17]}集合或者列表內(nèi)嵌文檔{"user":{"name":"lison"}}子對象Decimal128{"price":NumberDecimal("2.099")}3.4版本新增的數(shù)據(jù)類型,無精度問題單機安裝12快速入門3查詢目錄
ONTENTSC4更新6安全7其他命令01查詢概要MongoDB查詢數(shù)據(jù)的語法格式如下:db.collection.find(query,projection)query
:可選,使用查詢操作符指定查詢條件projection
:可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值,只需省略該參數(shù)即可(默認省略)。需要以易讀的方式來讀取數(shù)據(jù),可以使用pretty()方法;02查詢選擇器運算符類型運算符描述范圍$eq等于$lt小于$gt大于$lte小于等于$gte大于等于$in判斷元素是否在指定的集合范圍里$all判斷數(shù)組中是否包含某幾個元素,無關(guān)順序$nin判斷元素是否不在指定的集合范圍里布爾運算$ne不等于,不匹配參數(shù)條件$not不匹配結(jié)果$or有一個條件成立則匹配$nor所有條件都不匹配$and所有條件都必須匹配$exists判斷元素是否存在其他.子文檔匹配$regex正則表達式匹配03查詢選擇映射字段選擇:db.users.find({},{'username':1})字段排除:db.users.find({},{'username':0})排序sort():db.orders.find().sort({'orderTime':1,'price':1})1:升序-1:降序跳過和限制skip(n):跳過n條數(shù)據(jù)limit(n):限制n條數(shù)據(jù)e.g:db.orders.find().sort({'orderTime':-1}).limit(5).skip(5)查詢唯一值distinct():查詢指定字段的唯一值,e.g:db.users.distinct(“age”)04字符串?dāng)?shù)組選擇查詢1.數(shù)組單元素查詢
db.users.find({"favorites.movies":"蜘蛛俠"})
查詢數(shù)組中包含“蜘蛛俠”2.數(shù)組精確查找db.users.find({“favorites.movies”:[“殺破狼2","戰(zhàn)狼","雷神1"]},{"favorites.movies":1})查詢數(shù)組等于[“殺破狼2”,“戰(zhàn)狼”,“雷神1”]的文檔,嚴(yán)格按照順序;3.數(shù)組多元素查詢db.users.find({"favorites.movies":{"$all":["雷神1","戰(zhàn)狼"]}},{"favorites.movies":1})查詢數(shù)組包含[“雷神1”,“戰(zhàn)狼”]的文檔,跟順序無關(guān)4.索引查詢db.users.find({"favorites.movies.0":"殺破狼2"},{"favorites.movies":1})查詢數(shù)組中第一個為“殺破狼2”的文檔5.返回數(shù)組子集db.users.find({},{"favorites.movies":{"$slice":[1,2]},"favorites":1})$slice可以取兩個元素數(shù)組,分別表示跳過和限制的條數(shù);05對象數(shù)組選擇查詢1.單元素查詢
db.users.find({"comments":{"author":"lison6","content":"lison評論6"}})
備注:對象數(shù)組精確查找2.查找lison1或者lison12評論過的user($in查找符)
db.users.find({"comments.author":{"$in":["lison1","lison12"]}}).pretty()備注:跟數(shù)量無關(guān),跟順序無關(guān);3.查找lison1和lison12都評論過的userdb.users.find({"comments.author":{"$all":["lison12","lison1"]}}).pretty()備注:跟數(shù)量有關(guān),跟順序無關(guān);4.查找lison5評語為“l(fā)ison是蒼老師的小迷弟”的user($elemMatch查找符)
db.users.find({"comments":{"$elemMatch":{"author":"lison5","content":"lison是蒼老師的小迷弟"}}}).pretty()備注:數(shù)組中對象數(shù)據(jù)要符合查詢對象里面所有的字段,$全元素匹配,和順序無關(guān);06查詢實戰(zhàn)演練需求描述查看一個人的信息,打開頁面只顯示三條評論點擊評論的下一頁按鈕,新加載三條評論默認按照評論時間降序解決方案描述新增評論時,使用$sort運算符進行排序,插入評論后,再按照評論時間降序排序;查看人員時加載最新的三條評論;點擊評論的下一頁按鈕,新加載三條評論如果有多種排序需求怎么處理?07Java客戶端解析原生java驅(qū)動MongoClient→MongoDatabase→MongoCollectionMongoClient被設(shè)計成線程安全、可以被多線程共享的。通常訪問數(shù)據(jù)庫集群的應(yīng)用只需要一個實例如果需要使用pojo對象讀寫,需要將PojoCodecProvider注入到client中查詢和更新的API類查詢器:com.mongodb.client.model.Filters更新器:com.mongodb.client.model.Updates投影器:com.mongodb.client.model.Projections08Springmongodb解析Xml配置文件<!--mongodb連接池配置--><mongo:mongo-clienthost="29"port="27017"><mongo:client-options
write-concern="ACKNOWLEDGED"
connections-per-host="100"
threads-allowed-to-block-for-connection-multiplier="5"
max-wait-time="120000"
connect-timeout="10000"/>
</mongo:mongo-client>><!--mongodb數(shù)據(jù)庫工廠配置--><mongo:db-factorydbname="lison"mongo-ref="mongo"/><!--mongodb模板配置--><beanid="anotherMongoTemplate"class="org.springframework.data.mongodb.core.MongoTemplate"><constructor-argname="mongoDbFactory"ref="mongoDbFactory"/><propertyname="writeResultChecking"value="EXCEPTION"></property></bean>09Springmongodb解析Springmongodb開發(fā)模板模式,基于MongoOperations進行操作,基于pojo的操作,配合@document注解開發(fā);查詢和更新的API類查詢器:org.springframework.data.mongodb.core.query.Query查詢條件:org.springframework.data.mongodb.core.query.Criteria更新器:org.springframework.data.mongodb.core.query.Update10Mongodb連接池配置參數(shù)名默認值說明writeConcernACKNOWLEDGED寫入安全機制,是一種客戶端設(shè)置,用于控制寫入安全的級別:
ACKNOWLEDGED默認選項,數(shù)據(jù)寫入到Primary就向客戶端發(fā)送確認
0Unacknowledged對客戶端的寫入不需要發(fā)送任何確認,適用于性能要求高,但不關(guān)注正確性的場景;
1W1數(shù)據(jù)寫入后,會等待集群中1臺發(fā)送確認
2W2數(shù)據(jù)寫入后,會等待集群中兩臺臺發(fā)送確認
3W3數(shù)據(jù)寫入后,會等待集群中3臺臺發(fā)送確認
JOURNALED確保所有數(shù)據(jù)提交到j(luò)ournalfile
MAJORITY等待集群中大多數(shù)服務(wù)器提交后確認;codecRegistryMongoClient.getDefaultCodecRegistry()編解碼類,實現(xiàn)Codec接口minConnectionsPerHost最小連接數(shù),connections-per-hostconnectionsPerHost100最大連接數(shù)threadsAllowedToBlockForConnectionMultiplier5此參數(shù)跟connectionsPerHost的乘機為一個線程變?yōu)榭捎玫淖畲笞枞麛?shù),超過此乘機數(shù)之后的所有線程將及時獲取一個異常maxWaitTime1000*60*2一個線程等待鏈接可用的最大等待毫秒數(shù),0表示不等待maxConnectionIdleTime0設(shè)置池連接的最大空閑時間,0表示沒有限制maxConnectionLifeTime0設(shè)置池連接的最大使用時間,0表示沒有限制connectTimeout1000*10連接超時時間alwaysUseMBeansfalse是否打開JMX監(jiān)控11Mongodb連接池配置參數(shù)名默認值說明heartbeatFrequency10000設(shè)置心跳頻率。這是驅(qū)動程序嘗試確定群集中每個服務(wù)器的當(dāng)前狀態(tài)的頻率。minHeartbeatFrequency500設(shè)置最低心跳頻率。如果驅(qū)動程序必須經(jīng)常重新檢查服務(wù)器的可用性,那么至少要等上一次檢查以避免浪費。heartbeatConnectTimeout20000心跳檢測連接超時時間heartbeatSocketTimeout20000心跳檢測Socket超時時間12數(shù)據(jù)模式設(shè)計mongoDBMYSQLUser表字段類型IdNvarcharUsernameNvarchar…………favorites表字段類型IdNvarcharTypeNvarchar…………13nosql在數(shù)據(jù)模式設(shè)計上的優(yōu)勢讀寫效率高-在IO性能上有先天獨厚的優(yōu)勢;可擴展能力強,不需要考慮關(guān)聯(lián),數(shù)據(jù)分區(qū)分庫,水平擴展就比較簡單;動態(tài)模式,不要求每個文檔都具有完全相同的結(jié)構(gòu)。對很多異構(gòu)數(shù)據(jù)場景支持非常好;模型自然-文檔模型最接近于我們熟悉的對象模型;14mongoDB能不能實現(xiàn)關(guān)聯(lián)查詢?先考慮內(nèi)嵌,直接按照你的對象模型來設(shè)計你的數(shù)據(jù)模型。如果你的對象模型數(shù)量不多,關(guān)系不是很復(fù)雜,直接一種對象對應(yīng)一個集合就可以了單個bson文檔最大不能超過16M;當(dāng)文檔超過16M的時候,就應(yīng)該考慮使用引用(DBRef)了,在主表里存儲一個id值,指向另一個表中的id值。DBRef語法:{"$ref"
:
<value>,"$id"
:
<value>,"$db"
:
<value>}
$ref:引用文檔所在的集合的名稱;$id:所在集合的_id字段值;$db:可選,集合所在的數(shù)據(jù)庫實例;使用dbref腳本示例:varlison=db.users.findOne({"username":"lison"});vardbref=ments;db[dbref.$ref].findOne({"_id":dbref.$id})Tips:DBRef只是關(guān)聯(lián)信息的數(shù)據(jù)載體,本身并不會去關(guān)聯(lián)數(shù)據(jù);15聚合的理解聚合框架就是定義一個管道,管道里的每一步都為下一步輸出數(shù)據(jù)數(shù)據(jù)輸入文檔管道操作1管道操作2管道操作3輸入文檔……$project:投影,指定輸出文檔中的字段;$match:用于過濾數(shù)據(jù),只輸出符合條件的文檔。$match使用MongoDB的標(biāo)準(zhǔn)查詢操作$limit:用來限制MongoDB聚合管道返回的文檔數(shù)。$skip:在聚合管道中跳過指定數(shù)量的文檔,并返回余下的文檔。$unwind:將文檔中的某一個數(shù)組類型字段拆分成多條,每條包含數(shù)組中的一個值。$group:將集合中的文檔分組,可用于統(tǒng)計結(jié)果。$sort:將輸入文檔排序后輸出。常用的管道操作16$group操作符$group:可以分組的數(shù)據(jù)執(zhí)行如下的表達式計算:$sum:計算總和。$avg:計算平均值。$min:根據(jù)分組,獲取集合中所有文檔對應(yīng)值得最小值。$max:根據(jù)分組,獲取集合中所有文檔對應(yīng)值得最大值。$push:將指定的表達式的值添加到一個數(shù)組中。$addToSet:將表達式的值添加到一個集合中(無重復(fù)值)。
$first:返回每組第一個文檔,如果有排序,按照排序,如果沒有按照默認的存儲的順序的第一個文檔。
$last:返回每組最后一個文檔,如果有排序,按照排序,如果沒有按照默認的存儲的順序的最后個文檔。17聚合訓(xùn)練查詢2015年4月3號之前,每個用戶每個月消費了多少錢,并按用戶名進行排序:db.ordersTest.aggregate([{"$match":{"orderTime":{"$lt":newDate("2015-04-03T16:00:00.000Z")}}},{"$group":{"_id":{"useCode":"$useCode","month":{"$month":"$orderTime"}},"total":{"$sum":"$price"}}},{"$sort":{"_id":1}}])orderTest$match$group$sort輸入文檔單機安裝12快速入門3查詢目錄
ONTENTSC4更新5安全6其他命令01更新操作概要更新的方法替換更新操作符更新update()方法用于更新已存在的文檔。語法格式如下:db.collection.update(<query>,<update>,{upsert:<boolean>,multi:<boolean>,writeConcern:<document>})參數(shù)說明:query
:update的查詢條件,類似sqlupdate查詢內(nèi)where后面的;update
:update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sqlupdate查詢內(nèi)set后面的upsert
:可選,這個參數(shù)的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。multi
:可選,mongodb默認是false,只更新找到的第一條記錄,如果這個參數(shù)為true,就把按條件查出來多條記錄全部更新。writeConcern
:可選,寫安全配置。性能更好原子性操作02更新選擇器類型運算符描述操作符$inc指定值加n$set更新指定字段$unset將指定字段刪除$rename更新字段名稱數(shù)組操作符$定位到某一個元素$push添加值到數(shù)組中$addToSet添加值到數(shù)組中,有重復(fù)則不處理$pop刪除數(shù)組第一個或者最后一個$pull從數(shù)組中刪除匹配查詢條件的值$pullAll從數(shù)組中刪除多個值數(shù)組運算修飾符$each與$push和$addToSet等一起使用來操作多個值$slice與$push和$each一起使用來操作用來縮小更新后數(shù)組的大小$sort與$push、$each和$slice一起使用來對數(shù)組進行排序隔離運算符$isolated隔離其他操作,不允許其他操作交叉更新,不能再分片中使用04新增數(shù)據(jù)拿不到ObjectID?使用insert增加數(shù)據(jù)返回值是什么?varinsert=db.users.insert({"username":"ruolan"})使用upsert屬性,讓update變成insertdb.users.update({"":""},{"username":"leilei"},{"upsert":true})建議:
不要用objectID作為系統(tǒng)中檢索數(shù)據(jù)的條件update中的query加在有索引的字段05更新示例刪除字段示例db.users.updateMany({"username":"lison"},{"$unset":{"country":"","age":""}})更新字段名稱示例db.users.updateMany({"username":"jack"},{"$rename":{"country":"guojia","age":"nianling"}})$each作用示例db.users.updateMany({"username":"jack"},{"$addToSet":{"favorites.movies":{"$each":["小電影2","小電影3"]}}})db.users.updateMany({"username":"jack"},{"$addToSet":{"favorites.movies":["小電影2","小電影3"]}})刪除字符串?dāng)?shù)組中元素示例db.users.updateMany({"username":"jack"},{"$pull":{"favorites.movies":["小電影2","小電影3"]}})db.users.updateMany({"username":"jack"},{"$pullAll":{"favorites.movies":["小電影2","小電影3"]}})06更新示例向?qū)ο髷?shù)組中插入元素給jack老師增加一條評論($push)db.users.updateOne({"username":"jack"},{"$push":{"comments":{"author":"lison23","content":"ydddyyytttt"}}})給jack老師批量新增兩條評論($push,$each)db.users.updateOne({"username":"jack"},{"$push":{"comments":{"$each":[{"author":"lison22","content":"yyyytttt"},{"author":"lison23","content":"ydddyyytttt"}]}}})給jack老師批量新增兩條評論并對數(shù)組進行排序($push,$eachm,$sort)db.users.updateOne({"username":"jack"},{"$push":{"comments":{"$each":[{"author":"lison22","content":"yyyytttt"},{"author":"lison23","content":"ydddyyytttt"}],
$sort:{"author":1}}}})07更新示例刪除對象數(shù)組中元素示刪除lison1對jack的所有評論(批量刪除)db.users.update({"username":"jack"},{"$pull":{"comments":{"author":"lison22"}}})刪除lison5對lison評語為“l(fā)ison是蒼老師的小迷弟”的評論db.users.update({"username":"lison"},{"$pull":{"comments":{"author":"lison5","content":"lison是蒼老師的小迷弟"}}})更新對象數(shù)組中元素,$符號示例db.users.updateMany({"username":"jack","comments.author":"lison1"},{"$set":{"comments.$.content":"xxoo","comments.$.author":"lison10"}})含義:精確修改某人某一條精確的評論,如果有多個符合條件的數(shù)據(jù),則修改最后一條數(shù)據(jù)。無法批量修改數(shù)組元素08更新的原子性mongodb的更新都是原子的,mongodb所有的寫操作都是有鎖的。mongoDB2.2之前鎖級別為實例級別,mongoDB2.2以后版本鎖級別為數(shù)據(jù)庫級別,mongoDB3.0中,WiredTiger的鎖級別是文檔級別;findAndModify命令:在同一往返過程中原子更新文檔并返回它;$isolated命令:mongoDB對寫鎖進行了優(yōu)化,對長時間的寫操作會為其他的讀寫操作讓路,使用$isolated可以避免這種讓路,隔離其他操作,不允許其他操作交叉更新,不能再分片中使用;
例如:db.users.update( {"$isolated”:true},{"username":"lison"},{"$pull":{"comments":{"author":"lison5","content":"lison是蒼老師的小迷弟"}}})09findandModify命令示例常規(guī)的update的方法不能返回更新后的數(shù)據(jù)db.num.update({"_id":ObjectId("5a5b4c285731a2a7cd01c5ae")},{"$inc":{"order":1}})
使用findandModify方法在修改數(shù)據(jù)同時返回更新前的數(shù)據(jù)或更新后的數(shù)據(jù)db.num.findAndModify({"query":{"_id":ObjectId("5a58cef99506c50abaeb4384")}, "update":{"$inc":{"saleOrder":1}}, "new":true })單機安裝12快速入門3查詢目錄
ONTENTSC4更新5安全6其他命令01Role-BasedAccessControl基于角色的控制角色類型類型說明角色名稱說明數(shù)據(jù)庫一般角色
(DatabaseUserRoles)每個數(shù)據(jù)庫都包含的一般角色;read提供讀取所有非系統(tǒng)集合和部分系統(tǒng)集合的數(shù)據(jù)的能力,系統(tǒng)集合包括:system.indexes,system.js和spaces集合。readWrite提供read角色的所有權(quán)限以及修改所有非系統(tǒng)集合和system.js集合上的數(shù)據(jù)的能力。數(shù)據(jù)庫管理角色
(DatabaseAdministrationRoles)每個數(shù)據(jù)庫都包含的數(shù)據(jù)庫管理角色;dbAdmin提供執(zhí)行管理任務(wù)的能力,如與模式相關(guān)的任務(wù),索引,收集統(tǒng)計信息。此角色不授予用戶和角色管理的權(quán)限。userAdmin提供在當(dāng)前數(shù)據(jù)庫上創(chuàng)建和修改角色和用戶的能力。dbOwner提供對數(shù)據(jù)庫執(zhí)行任何管理操作的能力。此角色結(jié)合了readWrite,dbAdmin和userAdmin角色授予的權(quán)限。集群管理角色
(ClusterAdministrationRoles)用于管理整個數(shù)據(jù)庫集群系統(tǒng)而不是特定數(shù)據(jù)庫的角色。這些角色包括但不限于副本集和分片群集管理功能。clusterManager在集群上提供管理和監(jiān)視操作。具有此角色的用戶可以分別訪問在分片和復(fù)制中使用的config和local數(shù)據(jù)庫。clusterMonitor為監(jiān)控工具(如MongoDBCloudManager和OpsManager監(jiān)控代理)提供只讀訪問權(quán)限。hostManager提供監(jiān)視和管理服務(wù)器的能力。clusterAdmin提供權(quán)限最高的群集管理訪問。此角色結(jié)合了由clusterManager,clusterMonitor和hostManager角色授予的權(quán)限。此外,該角色還提供了dropDatabase操作。02Role-BasedAccessControl基于角色的控制角色類型類型說明角色名稱說明備份和恢復(fù)角色
(BackupandRestorationRoles)用于專門的備份和恢復(fù)的角色backup提供備份數(shù)據(jù)所需的權(quán)限。此角色提供足夠的權(quán)限來使用MongoDBCloudManager備份代理,OpsManager備份代理或使用mongodump。restore提供使用mongorestore恢復(fù)數(shù)據(jù)所需的權(quán)限全數(shù)據(jù)庫角色
(All-DatabaseRoles)適用于除mongod實例中的local和config之外的所有數(shù)據(jù)庫:readAnyDatabase提供與讀取相同的只讀權(quán)限,除了適用于群集中除本地和配置數(shù)據(jù)庫以外的所有權(quán)限。該角色還提供了整個集群上的listDatabases操作。readWriteAnyDatabase提供與readWrite相同的讀取和寫入權(quán)限,除了它適用于群集中除本地和配置數(shù)據(jù)庫以外的所有數(shù)據(jù)。該角色還提供了整個集群上的listDatabases操作。userAdminAnyDatabase提供與userAdmin相同的用戶管理操作訪問權(quán)限,除了適用于群集中除本地數(shù)據(jù)庫和配置數(shù)據(jù)庫外的所有數(shù)據(jù)。dbAdminAnyDatabase提供與dbAdmin相同的數(shù)據(jù)庫管理操作訪問權(quán)限,除了它適用于除集群中的本地數(shù)據(jù)庫和配置數(shù)據(jù)庫以外的所有數(shù)據(jù)庫管理操作。該角色還提供了整個集群上的listDatabases操作。
超級角色
(SuperuserRoles)所有資源的完整權(quán)限r(nóng)oot提供對readWriteAnyDatabase,dbAdminAnyDatabase,userAdminAnyDatabase,clusterAdmin,還原和備份相結(jié)合的操作和所有資源的訪問。03客戶端授權(quán)shell腳本創(chuàng)建用戶db.createUser({'user':'boss','pwd':'boss','roles':[{'role':'userAdminAnyDatabase','db':'ad
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣告公司工作合作協(xié)議
- 員工借調(diào)協(xié)議書參考
- 2024年責(zé)任書范本
- 課程設(shè)計開發(fā)培訓(xùn)師
- 江蘇省蘇州市(2024年-2025年小學(xué)五年級語文)人教版能力評測((上下)學(xué)期)試卷及答案
- 廣東省云浮市(2024年-2025年小學(xué)五年級語文)統(tǒng)編版競賽題((上下)學(xué)期)試卷及答案
- 2024版離婚協(xié)議書范例無子女
- 工程勘察建筑安裝合同
- 就業(yè)協(xié)議書的法律效力解析
- 貿(mào)易區(qū)房子出租合同范本
- 群文閱讀《父母的愛》
- 《犯罪學(xué)》課程教學(xué)大綱
- 醫(yī)藥代表晉級管理辦法
- 格林公式(公開教學(xué)用)
- 看圖寫話二年級公開課已修改版
- AWS_D1.1焊接工藝評定記錄中英文
- 安徽省淮北市地方婚禮流程資料
- 附件3-4歐曼金融服務(wù)經(jīng)銷商融資業(yè)務(wù)介紹
- 中醫(yī)骨傷科學(xué)9肩周炎上肢傷筋
- 五年級分數(shù)乘法口算練習(xí)
- 客戶服務(wù)管理七大原則
評論
0/150
提交評論