簡介:
mongodb作為一款通用型數據庫,除了能夠創建,讀取,更新和刪除數據外,還提供一系列不斷擴展的獨特功能。
a.索引: mongodb支持二級索引,允許多種快速查詢,且提供和唯一索引,復合索引,地理空間索引,以及全文索引。
b.聚合: 用戶能夠通過簡單的片段創建復雜的聚合,並通過數據庫自動優化。
c.特殊的集合類型: 支持存在時間有限的集合,適用於那些將在某個時刻過期的數據,如會話,也支持固定大小的集合,適用於保存近期數據,如日志 。
d.文件存儲: 支持一種非常易用的協議,用於存儲大文件和文件元數據。 mongodb並不具備一些在關系型數據庫中的普遍功能,如連接和復雜的多行事務。省略這些功能是出於架構上的考慮,為了得到更好的擴展性, 因為在分布式系統中,這兩個功能難以高效的實現。
MongoDB的一個主要目標是提供卓越的性能,MongoDB能對文檔進行動態的填充,也能預分配是護具文件以利用額外的空間來換取 穩定的性能。MongoDB把盡可能多的內存用作緩存,試圖為每次的查詢選擇正確的索引。
注: 1.不能含有空字符(\0),這個字符表示鍵的結尾。
2.$和.具有特殊的意義,只能在特定的環境下使用。
3.區分大小寫。
4.文檔不能含有重復的鍵值。
集合里可以存放任何文檔,還有必要使用多個集合嗎?
1.在一個集合里查詢特定類型的文檔在速度上不是 很划算。
2.把同種類型的文檔放在一個集合里,數據會更加集中。
3.在一個集合中只放入一種類型的文檔,可以更有效的對集合進行索引。
4.方便開發者和管理者。
MongoDB中,多個文檔組成集合,多個集合組成數據庫。
安裝MongoDB:
1.創建mongo數據目錄:
mkdir /data/mongodb
2.准備yum源:
vi /etc/yum.repos.d/mongodb-org-3.2.repo
[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
3.安裝:
yum -y install mongodb-org
4.創建數據庫目錄和日志目錄:(數據庫目錄和日志目錄的權限所屬為mongod)
mkdir /data/mongodb/
5.啟動mongodb服務:
service mongod start
[ps1]:mongodb非正常關閉時,再次啟動的異常處理:
a.正常關閉方法:service mongod stop--->service mongod start :不可以直接使用restart
b.非正常關閉以后需要刪除mongodb.lock和mongod.log文件
c.刪除文件以后,使用repair參數進行恢復:mongod --repair
d.恢復文件以后進行重啟服務
e. 服務重啟的時候要確保dbpath所在文件夾為空 #
[ps2]:將mongodb的數據文件指定到相應目錄后,指定的目錄權限所屬的組應該為mongod !!!
[ps3]:mongodb3.0開啟認證: security: authorization: enabled
6.連接數據庫:
cd /usr/local/bin
./mongo
使用 --nodb,啟動時不連接到任何數據庫
conn = new Mongo("host:port")
db = conn.getDB("admin")
>show dbs #查看數據庫
>use admin
>db.createUser(
{
user:"admin",
pwd:"kasumi",
roles:[{role:"userAdminAnyDatabase",db:"admin"}]
}
)
>db.auth("admin","kasumi"); #返回值為1,則授權成功。
創建擁有root權限的數據庫用戶:
>db.createUser({
user:"root",
pwd:"kasumi",
role:[{role:"root",db:"admin"}]
}
)
>db.auth("root","kasumi")
>exit
#使用擁有超級權限的用戶登錄,可以刪除創建的其他用戶。
db.createUser({user:"trader",pwd:"lean123",roles:[{role:"readWrite",db:"trader"}]});
內建的角色:
7.mongodb認證連接:
./mongo admin -uadmin -p #連接時需要指定連接的數據庫名稱
./mongo 192.168.0.83/admin -uadmin -p#遠程連接----指定服務器