MongoDB基礎

mongodb:
由C++語言編寫绅这,分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)。
Mongodb將數(shù)據(jù)存儲為一個文檔吐葵,數(shù)據(jù)結構由鍵值(key=>value)對組成,Mongodb文檔類似于Json對象桥氏,字段值可以包含其他文檔温峭,數(shù)組,以及文檔數(shù)組
{
  name:"use",
  age:26,
  status:"A",
  groups:["news","sports"]
}

MongoDB概念解析:

SQL術語/概念            MongoDB術語/概念            說明
database            database                數(shù)據(jù)庫
table               collection              數(shù)據(jù)庫表/集合
row                 document                數(shù)據(jù)記錄行/文檔
column              field                   數(shù)據(jù)字段/域
index               index                   索引
table joinx         -                       表連接字支,mongodb不支持
primary key         primary key             主鍵凤藏,Mongodb主動將_id字段設置為主鍵

linux平臺安裝Mongodb:(Centos6 x64)

yum install -y mongodb-server mongodb  
# rpm -ql mongodb-server
/etc/logrotate.d/mongodb      #日志滾動配置文件
/etc/mongodb.conf               #mongodb-server主要配置文件
/etc/rc.d/init.d/mongod         #mongodb啟動腳本
/etc/sysconfig/mongod           #mongodb啟動參數(shù)
/usr/bin/mongod                 #管理工具
/usr/bin/mongos
/usr/share/man/man1/mongod.1.gz
/usr/share/man/man1/mongos.1.gz
/var/lib/mongodb                #mongodb默認數(shù)據(jù)庫存儲位置
/var/log/mongodb                #日志目錄
/var/run/mongodb

# rpm -ql mongodb           #mongodb客戶端
/usr/bin/bsondump
/usr/bin/mongo                  #登陸后臺shell工具
/usr/bin/mongodump
/usr/bin/mongoexport
/usr/bin/mongofiles
/usr/bin/mongoimport
/usr/bin/mongooplog
/usr/bin/mongoperf
/usr/bin/mongorestore
/usr/bin/mongosniff
/usr/bin/mongostat
/usr/bin/mongotop
/usr/share/man/man1/bsondump.1.gz
/usr/share/man/man1/mongo.1.gz
/usr/share/man/man1/mongodump.1.gz
/usr/share/man/man1/mongoexport.1.gz
/usr/share/man/man1/mongofiles.1.gz
/usr/share/man/man1/mongoimport.1.gz
/usr/share/man/man1/mongooplog.1.gz
/usr/share/man/man1/mongoperf.1.gz
/usr/share/man/man1/mongorestore.1.gz
/usr/share/man/man1/mongosniff.1.gz
/usr/share/man/man1/mongostat.1.gz
/usr/share/man/man1/mongotop.1.gz

# data/db 是 MongoDB 默認的啟動的數(shù)據(jù)庫路徑(--dbpath)

#或者
yum install -y mongodb-org-server-2.6.5-1.x86_64.rpm 
yum install -y mongodb-org-mongos-2.6.5-1.x86_64.rpm  
yum install - ymongodb-org-shell-2.6.5-1.x86_64.rpm

mongodb配置文件:

# vim /etc/mongod.conf
logpath=/data/mongodb/mongod.log
dbpath=/data/mongodb
pidfilepath=/data/mongodb/mongod.pid
#bind_ip=127.0.0.1
# 準備數(shù)據(jù)目錄
mkdir -pv /data/mongodb
chown -R mongod.mongod /data/mongodb

啟動mongodb:
/etc/init.d/mongod start
# 默認啟動后數(shù)據(jù)庫目錄在:/var/lib/mongodb(配置文件不定義dbpath)
mongod這樣方式啟動,會占據(jù)當前shell終端
# 啟動后數(shù)據(jù)庫目錄在/data/mongodb,此目錄需要提前創(chuàng)建好

# Mongodb默認數(shù)據(jù)庫為"db",單實例容納多個數(shù)據(jù)庫堕伪,每一個都有自己的集合揖庄,權限,不同的數(shù)據(jù)庫也放置在不同文件中欠雌。

# mongodb終端命令都可以使用tab鍵來補全接下來的命令
# show dbs 顯示列出所有數(shù)據(jù)庫
# db 顯示當前數(shù)據(jù)庫對象或集合
# use 可以連接到一個指定的數(shù)據(jù)庫

# service mongod start

mongodb數(shù)據(jù)庫名字要求:

1.不能是空字符串蹄梢,("")
2.不得含有' '(空格),.富俄、$禁炒、/、\和\0(空宇符)
3.應全部小寫
4.最多64字節(jié)
# 保留數(shù)據(jù)庫名字霍比,可以直接訪問這些有特殊作用的數(shù)據(jù)庫
admin:從權限的角度來看幕袱,這是"root"數(shù)據(jù)庫,要是將一個用戶添加到這個數(shù)據(jù)庫桂塞,這個用戶自動繼承所有數(shù)據(jù)庫的權限凹蜂,一些特定的服務器端命令也只能從這個數(shù)據(jù)庫運行,比如列出所有的數(shù)據(jù)庫或關閉服務器
local:這個數(shù)據(jù)永遠不會被復制阁危,可以用來存儲限于本地單臺服務器的任意集合
config:當mongodb用于分片設置時玛痊,config數(shù)據(jù)庫在內(nèi)部使用,用于保存分片的相關信息狂打。

mongodb中的文檔:

文檔是一組鍵值(key-value)對(BSON),Mongodb的文檔不需要設置相同的字段擂煞,并且相同的字段不需要相同的數(shù)據(jù)類型,這與關系型數(shù)據(jù)庫有很大的區(qū)別趴乡。
注意:
1对省、文檔中的鍵值對是有序的蝗拿。
2、文檔中的值不僅可以是在雙引號里面的字符串蒿涎,還可以是其他幾種數(shù)據(jù)類型(甚至可以是整個嵌入的文檔)
3哀托、Mongodb區(qū)分類型和大小寫
4、Mongodb的文檔不能有重復的鍵
5劳秋、文檔的鍵是字符串仓手,除了少數(shù)列外情況,鍵可以使用任意UTF-8字符

文檔中的鍵命名規(guī)范:
1玻淑、鍵不能含有\(zhòng)0,(空字符)嗽冒,這個字符用來表示鍵的結尾
2、.和$有特別意義补履,只在特定環(huán)境下才能使用添坊。
3、以下劃線"_"開頭的鍵箫锤,是保留的(不是嚴格要求)

@@
BSON:mongodb通信依賴于文檔贬蛙,需要一種所有驅(qū)動,工具和進程都能共享的文檔表達方式這種表達方式叫做Binary JSON(BSON)
BSON是輕量的二進制格式麻汰,能將MongoDB的所有文檔表示為字節(jié)字符串速客,數(shù)據(jù)庫能理解BSON,存在磁盤上的文檔也是這種格式五鲫。

mongodb中的集合:

集合就是Mongodb文檔組,類似于RDBMS中的表格
集合存在于數(shù)據(jù)庫中岔擂,集合沒有固定的結構位喂,這意味著你在對集合可以插入不同格式和類型的數(shù)據(jù),但通常情況下我們插入集合的數(shù)據(jù)都會有一定的關聯(lián)性乱灵。
# 合法的集合名
1塑崖、集合名不能是空字符串"",
2、集合名不能含有\(zhòng)0字符(空字符)痛倚,這個字符表示集合名的結尾
3规婆、集合名不能以"system."開頭,這是為系統(tǒng)集合保留的前綴
4蝉稳、用戶創(chuàng)建的集合名字不能含有保留字符抒蚜,(類似$)

capped collections:限制集合

1、固定大小的集合耘戚,
2嗡髓、高性能,隊列過期收津,
3饿这、顯示的創(chuàng)建浊伙,指定集合大小,
# db.createCollection("mycoll",{capped:true,size:100000})
4长捧、在capped collection中嚣鄙,你能添加新的對象,
5串结、能進行更新哑子,然而對象不會增加存儲空間,如果增加奉芦,更新就會失敗赵抢,(空間被占滿)
6、數(shù)據(jù)庫不允許進行刪除声功,使用drop()方法刪除collection所有的行烦却。
7、刪除之后先巴,必須顯示的重新創(chuàng)建這個collection
8其爵、在32bit機器中,capped collection最大存儲為1e9(10的九次方)個字節(jié)

元數(shù)據(jù):

數(shù)據(jù)庫的信息是存儲在集合中伸蚯,系統(tǒng)命名空間:dbname.system.*
dbname.system.namespaces    列出所有名字空間
dbname.system.indexes       列出所有索引
dbname.system.profile       包含數(shù)據(jù)庫概要信息
dbname.system.users         列出所有可訪問數(shù)據(jù)庫的用戶
dbname.local.sources        包含復制對端(slave)的服務器信息和狀態(tài)
限制:
在{{system.indexes}}插入數(shù)據(jù)摩渺,可以創(chuàng)建索引,但除此之外該表信息是不可變的(特殊的drop index命令將自動更新相關信息)
{{system.users}}是可修改的剂邮。
{{system.profile}}是可刪除的摇幻。

Mongodb數(shù)據(jù)類型:

String    字符串,utf-8編碼的字符串才是合法的挥萌。
Integer     整型數(shù)值
Boolean     布爾值
Double      雙精度浮點值
Min/Max Keys    將一個值與BSON元素的最低值和最高值相對比
Arrays      用于將數(shù)組或列表或多個值存儲為一個鍵
Timestamp   時間戳绰姻,記錄文檔修改或添加的具體時間
Object      用于內(nèi)嵌文檔
Null        用于創(chuàng)建空值
Symbol      符號
Date        日期時間
Object ID   對象ID,用于創(chuàng)建文檔的ID
Binary Data 二進制數(shù)據(jù)
Code        代碼類型
Regular Expression  正則表達式類型

Mongodb - 連接:

URL連接語法:
mongodb://[username:passwprd@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
# mongodb://   固定格式
# username:password@    可選項,驅(qū)動會嘗試登陸此數(shù)據(jù)庫
# host1 必須的指定至少一個host,host1是唯一要填寫的引瀑,如果要連接復制集合狂芋,需要指定多個IP
# portX 可選的指定端口,如果不填憨栽,默認27017
# /database 如果指定username:password@,連接并驗證登陸指定數(shù)據(jù)庫帜矾,如不指定默認打開admin數(shù)據(jù)庫。
# ?options 是連接選項屑柔,如果不使用/database,則前面需要加上/屡萤,所有連接選項都是鍵值對,name=value,鍵值對之間通過&或;(分號)隔開

# 連接選項:
replicaSet=name         驗證replica set的名稱锯蛀,
slaveOK=true|false
    # true:在connect=direct模式下灭衷,驅(qū)動會連接第一臺機器,即使這臺服務器不是主旁涤,
           在connect=replicaSet模式下翔曲,驅(qū)動會發(fā)送所有的寫請求到主迫像,并且把讀取操作分布在其他從服務器
    # false:在connect=direct模式下,驅(qū)動會自動找尋主服務器瞳遍,
           在connect=replicaSet模式下闻妓,驅(qū)動僅僅連接主服務器,并且所有的讀寫命令都連接到主服務器
safe=true|false
    # true:在執(zhí)行更新操作之后掠械,驅(qū)動都會發(fā)送getLastError命令來確保更新成功
    # false:在每次更新之后由缆,驅(qū)動不會發(fā)送getLastError來確保更新成功
w=n         驅(qū)動添加{w:n}到getLastError命令,應用于safe=true.
wtimeoutMS=ms       驅(qū)動添加{wtimeout:ms}到getlasterror命令猾蒂,應用與safe=true
fsync=true|false
    # true:驅(qū)動添加{fsync:true}到getlasterror命令均唉,應用于safe=true
    #false:驅(qū)動不會添加到getlastError命令中
journal=true|false
    #如果設置為true,同步到journal(在提交到數(shù)據(jù)庫前寫入到實體中),應用于safe=true
connectTimeoutMS=ms     可以打開連接的時間
socketTimeoutMS=ms      發(fā)送和接受sockets時間
實例:
#使用默認端口來連接MongoDB的服務:
mongodb:localhost
#通過shell連接Mongodb服務:
mongo
#admin用戶,123456密碼,連接到本地的Mongodb服務上
mongodb://admin:123456@localhost/
#使用用戶名和密碼連接登陸到指定數(shù)據(jù)庫test
mongodb://admin:123456@localhost/test
#連接replica pair,服務器1為example1.com,服務器2為example2.
mongodb://example1.com:27017,example2.com:27017
#連接replica set 三臺服務器(端口為27017肚菠,27018舔箭,27019)
mongodb://localhost,localhost:27018,localhost:27019
#連接replica set 三臺服務器,寫入操作應用在主服務器蚊逢,并且分布查詢到從服務器
mongodb://host1,host2,host3/?salve=Ok=true
#直接連接第一個服務器层扶,無論是replica set一部分或者主服務器或者從服務器
mongodb://host1,host2,host3/?connect=direct;salveOk=true
#安全模式連接到localhost:
mongodb://localhost/?safe=true
#安全模式連接到replica set并且等待至少兩個復制服務器成功寫入,超時時間設置為2秒
mongodb://host1,host2,host3/?safe=true;w=2;wtimeoutMS=2000
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烙荷,一起剝皮案震驚了整個濱河市镜会,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌终抽,老刑警劉巖戳表,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異昼伴,居然都是意外死亡扒袖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門亩码,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人野瘦,你說我怎么就攤上這事描沟。” “怎么了鞭光?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵吏廉,是天一觀的道長。 經(jīng)常有香客問我惰许,道長席覆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任汹买,我火速辦了婚禮佩伤,結果婚禮上聊倔,老公的妹妹穿的比我還像新娘。我一直安慰自己生巡,他們只是感情好耙蔑,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孤荣,像睡著了一般甸陌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盐股,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天钱豁,我揣著相機與錄音,去河邊找鬼疯汁。 笑死牲尺,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的涛目。 我是一名探鬼主播秸谢,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霹肝!你這毒婦竟也來了估蹄?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沫换,失蹤者是張志新(化名)和其女友劉穎臭蚁,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讯赏,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡垮兑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了漱挎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片系枪。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖磕谅,靈堂內(nèi)的尸體忽然破棺而出私爷,到底是詐尸還是另有隱情,我是刑警寧澤膊夹,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布衬浑,位于F島的核電站,受9級特大地震影響放刨,放射性物質(zhì)發(fā)生泄漏工秩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望助币。 院中可真熱鬧浪听,春花似錦、人聲如沸奠支。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽倍谜。三九已至迈螟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尔崔,已是汗流浹背答毫。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留季春,地道東北人洗搂。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像载弄,于是被迫代替她去往敵國和親耘拇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容