原來NoSQL之MongoDB數據庫這麼厲害,不學白不學 !

NoSQL MongoDB JSON 技術 小丑魚BigData 2017-03-29

原來NoSQL之MongoDB數據庫這麼厲害,不學白不學 !

MongoDB

現在是數據時代,如果的數據已經不僅僅侷限於關係型數據,生活中隨時隨地產生的數據,類型和數量多的讓我們足夠頭疼,隨著memchached的NoSQL產生以來,現在的非關係型數據庫也越來越多,今天咱們就說說MongoDB,也順帶說下小編比較喜歡的可視化管理工具:

原來NoSQL之MongoDB數據庫這麼厲害,不學白不學 !

MongoClient

原來NoSQL之MongoDB數據庫這麼厲害,不學白不學 !

Robomongo

接來下說下MongoDB的核心點Shell:

三:MongoDB shell詳解

1.mongodb自帶shell工具的(mongo

1)shell使用及常用命令

2)mongodb數據工具(包括導入導出)

shell使用常用命令:

./mongo --port 27017

show dbs ---已有數據庫列表

show collections ---已有集合列表

show users ---已有用戶列表

use dbname ---切換數據庫,系統自動延遲創建該數據庫

db.account.save({'name':'test','addr':'china'}) --創建集合

db.account.find()---查看集合數據

db.dropDatabase() ---刪除數據庫(當前)

db.account.drop() --刪除當前數據集合

啟動shell(默認鏈接端口是27017):

[root@hadoop-senior01 bin]# ./mongo

或者

[root@hadoop-senior01 bin]# ./mongo --port 27017

查看數據庫:

> show dbs

admin 0.000GB

local 0.000GB

> help

也可以切換當前不存在的數據庫(動態的創建,延遲性加載,和關係型數據庫不一樣):

> 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根據算法自動分配id,也可以自定義,通常使用自定義算法

刪除數據集合:

> db.account.drop()

true

刪除當前數據:

> db.dropDatabase()

{ "dropped" : "sb", "ok" : 1 }

> show dbs

admin 0.000GB

local 0.000GB

2.MongDB數據工具

數據庫組件:mongod,mongos(分片的時候採用),mongo

數據庫工具

mongodump -h dbhost -d dbname -o dbdirectory --數據庫備份

mongorestore -h dbhost -d dbname --dir dbdirectory --數據庫恢復

./bsondump dump/bbs/account.bson --查看bson對象

./mongoexport -d bbs -c account -q {} -f name,addr --csv >account.csv --數據導出工具,導出為csv格式

./mongoexport -d bbs -c account -q {} -f name,addr>account.json導出為json格式

./mongoexport -d bbs -c account -q ‘{“name”:”test2”}’ -f name,addr -csv>account.csv帶查詢條件導出

./mongoimport -d ssb -c account --type csv --headerline --drop <mydata/account.csv--數據導入工具,導入csv文件

./mongoimport -d bbs -c account --type json --drop<account.json --導入json文件

四:MongoDB文檔,集合,數據庫的概念:

1.基本概念:

1)文檔是MongoDB中數據的基本單元,是MongoDB的核心概念,很類似關係數據庫中的行

2)集合可以被看作沒有模式的表

3)MongoDB每個實例都可容納多個獨立數據庫,每個數據庫都有自己的集合和權限

>db.account.count()

數據庫》集合》文檔document

數據庫》表》記錄(關係型數據庫)

2.文檔:

1)多個鍵及其關聯的值有序地放置在一起就是文檔

2)單鍵值文檔:{“username”:”bbs11”}

3)多鍵值文檔:{“_id”:”76b606a9f9b770517ca4d98b”,”userName”:”bbs59”,”acctAttr”:null}

4)文檔中鍵/值對有序的

5)文檔中的值不僅可以是字符串,也可以是其他數據類型(或者嵌入其他文檔,數據類型部分詳細講解)

6)鍵是字符串,鍵可以使用任意UTF-8字符

7)鍵不能含有\0(空字符),空字符表示鍵的結尾

8)和$作為保留字符,通常不應出現在鍵中

9)以下劃線”_”開頭的鍵通常情況下是保留的(_id)

10)MongoDB不但區分數據類型,也區分大小寫

{“user”:”11”}與{“user”:11}不同,{“User”:”11”}與{“user”:11”},oracle默認是不區分大小寫,也可以配置區分

11)文檔中不允許有重複的鍵:{“userName”:”bbs11”,”userName”:”david”}非法

3.集合:

1)集合就是一組文檔,與關係型數據庫的表可類比

2)集合是無模式的,MongoDB對模式不做強制要求,由開發者靈活把握

命令規則:

3)集合名不能是空串””;

4)不能含有空字符\0;

5)不能以”system.”開頭,這是系統集合保留的前綴

6)集合名不能含保留字符$;

7)組織集合的一種慣例是以.分開,近命名空間劃分子集合,例如

> show collections

system.users.system.indexes(admin)

4.數據庫:

1)多個集合組成數據庫

2)一個MongoDB實例可承載多個數據庫,互相之間彼此獨立

3)開發通常將一個應用的所有數據存放到同一個數據庫中

4)磁盤中,MongoDB將不同數據庫存放在不同文件中

5)命名規則:

1.數據庫名是UTF-8字符串,最長64個字符

2.不能是空字符串” ”;

3.不能含’’號和.號和$號和\號和\0號

4.應全部小寫

***一個MongoDB實例可承載多個數據庫***:

新建data/db2

重新啟動MongoDB:bin/monod --dbpath=../data/db2 --port 27018

Web端口:28018

啟動shell:bin/mongo --port 27018

6)系統保留數據庫

7)admin:這是root數據庫,添加用戶到該數據庫中,該用戶會自動繼承所有數據庫權限

8)local:這個數據庫中的數據永遠不會被複制,可以用於存儲限於本地數據單臺服務器的任意集合

9)config:分片時,config數據庫在內部使用,保存分片信息(config數據就保存分片的信息,就相當於配置服務器)

10)把數據庫名放集合名前,得到的就是集合的完全限定名稱,叫命令空間。命令空間長度不能超過121字節,實際使用時應小於100字節

***完全限定名稱***

>db.account.find()

>bbs.account --完全限定名

原來NoSQL之MongoDB數據庫這麼厲害,不學白不學 !

JMongoBrowser

今天就說這些,下次繼續,想諮詢更多,可加群(Q):131322610

原來NoSQL之MongoDB數據庫這麼厲害,不學白不學 !

相關推薦

推薦中...