《原來NoSQL之MongoDB數(shù)據(jù)庫這么厲害,不學(xué)白不學(xué) !》要點(diǎn):
本文介紹了原來NoSQL之MongoDB數(shù)據(jù)庫這么厲害,不學(xué)白不學(xué) !,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:非關(guān)系型數(shù)據(jù)庫
MongoDB
現(xiàn)在是數(shù)據(jù)時(shí)代,如果的數(shù)據(jù)已經(jīng)不僅僅局限于關(guān)系型數(shù)據(jù),生活中隨時(shí)隨地產(chǎn)生的數(shù)據(jù),類型和數(shù)量多的讓我們足夠頭疼,隨著memchached的NoSQL產(chǎn)生以來,現(xiàn)在的非關(guān)系型數(shù)據(jù)庫也越來越多,本日咱們就說說MongoDB,也順帶說下小編比較喜歡的可視化管理工具:
MongoClient
Robomongo
接來下說下MongoDB的核心點(diǎn)Shell:
三:MongoDB shell詳解
1.mongodb自帶shell工具的(mongo)
1)shell使用及常用命令
2)mongodb數(shù)據(jù)工具(包含導(dǎo)入導(dǎo)出)
shell使用常用命令:
./mongo --port 27017
show dbs ---已有數(shù)據(jù)庫列表
show collections ---已有集合列表
show users ---已有用戶列表
use dbname ---切換數(shù)據(jù)庫,系統(tǒng)自動(dòng)延遲創(chuàng)建該數(shù)據(jù)庫
db.account.save({'name':'test','addr':'china'}) --創(chuàng)建集合
db.account.find()---查看集合數(shù)據(jù)
db.dropDatabase() ---刪除數(shù)據(jù)庫(當(dāng)前)
db.account.drop() --刪除當(dāng)前數(shù)據(jù)集合
啟動(dòng)shell(默認(rèn)鏈接端口是27017):
[root@hadoop-senior01 bin]# ./mongo
或者
[root@hadoop-senior01 bin]# ./mongo --port 27017
查看數(shù)據(jù)庫:
> show dbs
admin 0.000GB
local 0.000GB
> help
也可以切換當(dāng)前不存在的數(shù)據(jù)庫(動(dòng)態(tài)的創(chuàng)建,延遲性加載,和關(guān)系型數(shù)據(jù)庫不一樣):
> use sb
switched to db sb
> show collections
> db.account.save({'name':'test','addr':'china'})
WriteResult({ "nInserted" : 1 })
> show collections
account
> show dbs
admin 0.000GB
local 0.000GB
sb 0.000GB
> db.account.find()
{ "_id" : ObjectId("58c724c5290846e2f0647206"), "name" : "test", "addr" : "china" }
mongodb根據(jù)算法自動(dòng)分配id,也可以自定義,通常使用自定義算法
刪除數(shù)據(jù)集合:
> db.account.drop()
true
刪除當(dāng)前數(shù)據(jù):
> db.dropDatabase()
{ "dropped" : "sb", "ok" : 1 }
> show dbs
admin 0.000GB
local 0.000GB
2.MongDB數(shù)據(jù)工具
數(shù)據(jù)庫組件:mongod,mongos(分片的時(shí)候采用),mongo
數(shù)據(jù)庫工具
mongodump -h dbhost -d dbname -o dbdirectory --數(shù)據(jù)庫備份
mongorestore -h dbhost -d dbname --dir dbdirectory --數(shù)據(jù)庫恢復(fù)
./bsondump dump/bbs/account.bson --查看bson對(duì)象
./mongoexport -d bbs -c account -q {} -f name,addr --csv >account.csv --數(shù)據(jù)導(dǎo)出工具,導(dǎo)出為csv格式
./mongoexport -d bbs -c account -q {} -f name,addr>account.json導(dǎo)出為json格式
./mongoexport -d bbs -c account -q ‘{“name”:”test2”}’ -f name,addr -csv>account.csv帶查詢條件導(dǎo)出
./mongoimport -d ssb -c account --type csv --headerline --drop <mydata/account.csv--數(shù)據(jù)導(dǎo)入工具,導(dǎo)入csv文件
./mongoimport -d bbs -c account --type json --drop<account.json --導(dǎo)入json文件
四:MongoDB文檔,集合,數(shù)據(jù)庫的概念:
1.基本概念:
1)文檔是MongoDB中數(shù)據(jù)的基本單元,是MongoDB的核心概念,很類似關(guān)系數(shù)據(jù)庫中的行
2)集合可以被看作沒有模式的表
3)MongoDB每個(gè)實(shí)例都可容納多個(gè)獨(dú)立數(shù)據(jù)庫,每個(gè)數(shù)據(jù)庫都有自己的集合和權(quán)限
>db.account.count()
數(shù)據(jù)庫》集合》文檔document
數(shù)據(jù)庫》表》記錄(關(guān)系型數(shù)據(jù)庫)
2.文檔:
1)多個(gè)鍵及其關(guān)聯(lián)的值有序地放置在一起就是文檔
2)單鍵值文檔:{“username”:”bbs11”}
3)多鍵值文檔:{“_id”:”76b606a9f9b770517ca4d98b”,”userName”:”bbs59”,”acctAttr”:null}
4)文檔中鍵/值對(duì)有序的
5)文檔中的值不僅可以是字符串,也可以是其他數(shù)據(jù)類型(或者嵌入其他文檔,數(shù)據(jù)類型部分詳細(xì)講解)
6)鍵是字符串,鍵可以使用任意UTF-8字符
7)鍵不能含有\(zhòng)0(空字符),空字符表示鍵的結(jié)尾
8)和$作為保存字符,通常不應(yīng)出現(xiàn)在鍵中
9)以下劃線”_”開頭的鍵通常情況下是保存的(_id)
10)MongoDB不但區(qū)分?jǐn)?shù)據(jù)類型,也區(qū)分大小寫
{“user”:”11”}與{“user”:11}不同,{“User”:”11”}與{“user”:11”},oracle默認(rèn)是不區(qū)分大小寫,也可以配置區(qū)分
11)文檔中不允許有重復(fù)的鍵:{“userName”:”bbs11”,”userName”:”david”}非法
3.集合:
1)集合就是一組文檔,與關(guān)系型數(shù)據(jù)庫的表可類比
2)集合是無模式的,MongoDB對(duì)模式不做強(qiáng)制要求,由開發(fā)者靈活把握
命令規(guī)則:
3)集合名不能是空串””;
4)不能含有空字符\0;
5)不能以”system.”開頭,這是系統(tǒng)集合保存的前綴
6)集合名不能含保存字符$;
7)組織集合的一種慣例是以.分開,近命名空間劃分子集合,例如
> show collections
system.users.system.indexes(admin)
4.數(shù)據(jù)庫:
1)多個(gè)集合組成數(shù)據(jù)庫
2)一個(gè)MongoDB實(shí)例可承載多個(gè)數(shù)據(jù)庫,互相之間彼此獨(dú)立
3)開發(fā)通常將一個(gè)應(yīng)用的所有數(shù)據(jù)存放到同一個(gè)數(shù)據(jù)庫中
4)磁盤中,MongoDB將不同數(shù)據(jù)庫存放在不同文件中
5)命名規(guī)則:
1.數(shù)據(jù)庫名是UTF-8字符串,最長64個(gè)字符
2.不能是空字符串” ”;
3.不能含’’號(hào)和.號(hào)和$號(hào)和\號(hào)和\0號(hào)
4.應(yīng)全部小寫
***一個(gè)MongoDB實(shí)例可承載多個(gè)數(shù)據(jù)庫***:
新建data/db2
重新啟動(dòng)MongoDB:bin/monod --dbpath=../data/db2 --port 27018
Web端口:28018
啟動(dòng)shell:bin/mongo --port 27018
6)系統(tǒng)保存數(shù)據(jù)庫
7)admin:這是root數(shù)據(jù)庫,添加用戶到該數(shù)據(jù)庫中,該用戶會(huì)自動(dòng)繼承所有數(shù)據(jù)庫權(quán)限
8)local:這個(gè)數(shù)據(jù)庫中的數(shù)據(jù)永遠(yuǎn)不會(huì)被復(fù)制,可以用于存儲(chǔ)限于當(dāng)?shù)財(cái)?shù)據(jù)單臺(tái)服務(wù)器的任意集合
9)config:分片時(shí),config數(shù)據(jù)庫在內(nèi)部使用,保留分片信息(config數(shù)據(jù)就保留分片的信息,就相當(dāng)于配置服務(wù)器)
10)把數(shù)據(jù)庫名放集合名前,得到的就是集合的完全限定名稱,叫命令空間.命令空間長度不能超過121字節(jié),實(shí)際使用時(shí)應(yīng)小于100字節(jié)
***完全限定名稱***
>db.account.find()
>bbs.account --完全限定名
JMongoBrowser
本日就說這些,下次繼續(xù),想咨詢更多,可加群(Q):131322610
歡迎參與《原來NoSQL之MongoDB數(shù)據(jù)庫這么厲害,不學(xué)白不學(xué) !》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/9346.html