《10分鐘學完Mongodb》要點:
本文介紹了10分鐘學完Mongodb,希望對您有用。如果有疑問,可以聯系我們。
相關主題:非關系型數據庫
維易PHP培訓學院每天發布《10分鐘學完Mongodb》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
實際開發中,Mongodb的應用場景比較靈活,可以做緩存,也可以做主數據庫,這取決于系統要求的應用性能與架構設計.今天我們來學習下Mongodb的相關知識,包含服務的啟動與連接、數據庫以及相關表的操作等.下述的截圖都是我親身測試過的,基本包含了mongodb操作的所有知識.
第一部分:mongodb服務啟動與鏈接
下載二進制文件放置在linux目錄下
解壓二進制文件,將文件夾重命名下,如,mongodb3.0.2,進入目錄進入bin下,我們可以看到如下程序,說幾個重點的:
返回上層目錄,創建一個咱們本身的mongodb的文件夾,目錄如下:
4個文件夾分別代表了:Bin 命令文件夾 ;data 數據庫相關文件夾;Conf 配置文件夾 ; log 日志文件夾.
將mongo3.0.2中的bin目錄下的mongod服務cp到maizuo-mongo的bin目錄下待啟動,此時我們進入conf文件夾下,vi mongod.conf文件,寫入以下內容:
Port 服務啟動端口;dbpath數據庫所在文件夾; logpath 日志存放位置 ;fork只在linux下有用 意味后臺進城啟動.
配置完成后,進入maizuo-mongo目錄,使用命令./bin/mongod -f conf/mongod.conf 啟動mongodb服務,輸出如下內容表明服務啟動成功.
下面,我們必要將源文件下的mongo命令cp到我們的maizuo-mongo的bin目錄下,然后使用客戶端連接mongodb服務,在這之前我們可以通過./bin/mongo --help命令看一下連接的命令:
由于我們當前未配置用戶名和暗碼 所以暫時不用關心[options]里的內容,使用命令./bin/mongo 127.0.0.1:12345連接mongodb:
我們發現它默認讓我們連接的是test數據庫 顯示如上內容并出現>箭頭,表示成功.可以使用db.shutdownServer()關閉mongodb服務.
第二部分:數據庫和表相關操作
1、數據庫相關
db 顯示當前數據庫
show dbs 顯示所有數據庫
use maizuo 切換到maizuo數據庫 maizuo不存在 會在合適的時機自動創建
show collections 顯示所有表名(在mongo里稱之為集合)
2、插入
db.maizuo_users.insert({name:’lvpeng’}) 只能插入一條
For(int i=1;i<6;i++) db.maizuo_users.insert({name:i}) 插入多條
3、查詢
db.maizuo_users.count() 查詢表中有多少條數據
db.maizuo_users.find() 查詢全部數據
db.maizuo_users.find({name:’lvpeng’}) 根據條件查詢數據 支持中文
查詢出來的數據 自帶了_id屬性 不過我們可以覆蓋這個屬性
db.maizuo_users.find().skip(2).limit(2).sort({name:1}) 查詢數據 過濾前2條 只返回兩條 并且依照name屬性正向排序
4、更新
1、將姓名為lvpeng 的用戶更新為xiaoxiong
db.maizuo_users.update({name:’lvpeng’},{name:’xiaoxiong’})
2、更新姓名為xiaoxiong 的用戶設置它的年齡為23歲 使用$set 關鍵詞
3、更新不存在的數據時,默認是不會執行成功的,但如果我們有類似的需求:在更新一條不存在的數據時,如果不存在,則insert進去,首先我們刪掉name為xiaoxiong 的記錄,然后執行更新,設置update辦法的第三個參數為true 表明如果不存在則插入
4、默認只更新第一條數據,如果我們想所有符合條件的數據,必要設置update第4個參數:
5、刪除
刪除操作必需傳遞參數.與更新不同的是,默認刪除所有復合條件的數據,例如:
刪除表可以使用db.maizuo_users.drop();
索引介紹
數據庫大的時候 使用索引可以加快速度,通過getIndexes辦法可以查詢索引
使用ensureIndex辦法 創建索引,其中1代表方向,需要注意的是集合里的數據過多時,創建索引會比較慢,原因你應該懂的.創建完成后,再次使用age作為條件查詢,速度會加快.
第三部分:簡單索引使用
1、id索引
_id默認的唯一索引
2、單鍵索引
最普通的索引,和id索引的區別是不會自動創建.
3、多鍵索引
單鍵索引的值為一個單一的值,多鍵索引具有多個值
4、復合索引
5、過期索引
(1)在一段時間后會過期的索引
(2)在索引過期后,對應的數據會被刪除
(3)適合存儲用戶的登錄數據或日志
(4)過期單位為秒,但有必定的誤差.
需要注意的是:存儲在過期索引字段的值必須是指定的時間類型ISODate或ISODate數組 否則不能被自動刪除;如果為ISODate數組 則依照最小的時間刪除,另外過期索引不能為復合索引.刪除時間不精確,有一定誤差,1分鐘的定時任務進程.
第四部分:全文索引
創建辦法:
db.maizuo_users.ensureIndex({key:’text’}) text為固定的寫法 意思為key字段上為全文索引
db.maizuo_users.ensureIndex({key1:’text’,key2:’text’}) 多字段的全文索引
db.maizuo_users.ensureIndex({‘$**’:’text’}) 所有字段的全文索引
1、全文索引創建
2、全文索引查詢
首先插入兩條測試數據
3、近似度查詢
初始化數據
按之前的查詢
加行score評分條件返回
依照score排序
4、全文索引的問題
(1)每次查詢只能指定一個$text查詢
(2)$text不能排除某些查詢條件
(3)不支持中文,模糊也好像不支持
第五部分 地理位置索引
將一些點的位置存儲在mongodb中, 創建索引后,可以依照位置來查詢其他點.
1、分類
2d索引 用于存儲和查找平面上的點
2dsphere索引 用于存儲和查找球面上的點
區別是計算方式的不同
2、查找方式
查詢距離某個點一定距離內的點,查找包括在某個區域內的點
3、2d索引
Db.maizuo_seats_ensureIndex({w:’2d’});創建索引
位置表示方式:經緯度
取值范圍:[-180,180] [-90,90]
4、$near 查詢附近的點
$maxDistance最大距離
5、$geoWithin查詢 查詢某個形狀內的點
(1)$box:矩形
{$box:[[x1,y1],[x2,y2]]}
(2)$center:圓形
{$center:[[x1,y1],r]}
(3)$polygon:多邊形
{$polygon[[x1,y1],[x2,y2],[x3,y3]]}
6、$geoNear查詢
$near的升級版
Db.runCommand(
{geoNear:seats,
Near:[2,2],
minDistance:
maxDistance:
}
)
第六部分 性能評估和監控
1、mongostat工具
用于查詢mongodb運行狀態的程序 Mongostat -h 127.0.0.1:12345
2、Profile集合
修改level為2 profile會記錄所有mongodb的操作
3、日志介紹
在mongod.conf配置文件里可以設置日志文件的詳細級別
從1個v到5個v 日志在log目錄下
4、Explain分析
針對一個查詢的分析
第七部分 Mongodb平安
1、平安級別
(1)物理隔離
(2)網絡隔離
(3)防火墻
(4)用戶名暗碼
2、權限開啟
Auth true 和keyfile開啟
3、創建用戶
CreateUser({
User:’’,
Pwd:’’
customData:’’,
Roles:[{role:’roletype’,db:’’}]
})
roleType: read readWrite dbAdmin dbOwner userAdmin
以上便是關于Mongodb的相關知識.