MongoDB實戰(zhàn):工具集與特殊魔術方法
一、MongoDB啟動方式
MongoDB除了支持命令行的啟動方式還支持配置文件啟動通過讀取啟動配置文件的方式來啟動數(shù)據(jù)庫比方說配置文件如下

則可以使用如下命令
1
|
. /mongod -f /etc/mongodb .conf |
MongoDB參數(shù)說明
dbpath:
數(shù)據(jù)文件存放路徑每個數(shù)據(jù)庫會在其中創(chuàng)建一個子目錄用于防止同一個實例多次運
行的mongod.lock也保存在此目錄中。
logpath
錯誤日志文件
logappend
錯誤日志采用追加模式默認是覆寫模式
bind_ip
對外服務的綁定ip一般設置為空及綁定在本機所有可用ip上如有需要可以單獨
指定
port
對外服務端口。Web管理端口在這個port的基礎上+1000
fork
以后臺Daemon形式運行服務
journal
開啟日志功能通過保存操作日志來降低單機故障的恢復時間在1.8版本后正式加入
取代在1.7.5版本中的dur參數(shù)。
syncdelay
系統(tǒng)同步刷新磁盤的時間單位為秒默認是60秒。
directoryperdb
每個db存放在單獨的目錄中建議設置該參數(shù)。與MySQL的獨立表空間類似
maxConns
最大連接數(shù)
repairpath
執(zhí)行repair時的臨時目錄。在如果沒有開啟journal異常down機后重啟必須執(zhí)行repair
操作。
停止數(shù)據(jù)庫這里有一點需要注意
使用kill-2或者pkill都可以但是不要使用kill-9來殺死MongoDB進程這樣會導致MongoDB的數(shù)據(jù)損壞。
二、常用工具集
MongoDB在bin目錄下提供了一系列有用的工具這些工具提供了MongoDB在運維管理上
的方便。
bsondump:將bson格式的文件轉(zhuǎn)儲為json格式的數(shù)據(jù)
mongo:客戶端命令行工具其實也是一個js解釋器支持js語法
mongod:數(shù)據(jù)庫服務端每個實例啟動一個進程可以fork為后臺運行
mongodump/mongorestore:數(shù)據(jù)庫備份和恢復工具
mongoexport/mongoimport:數(shù)據(jù)導出和導入工具
mongofiles:GridFS管理工具可實現(xiàn)二制文件的存取
mongos:分片路由如果使用了sharding功能則應用程序連接的是mongos而不是
mongod
mongosniff:這一工具的作用類似于tcpdump不同的是他只監(jiān)控MongoDB相關的包請
求并且是以指定的可讀性的形式輸出
mongostat:實時性能監(jiān)控工具
三、一些很重要的魔術方法
1、$all匹配所有
這個操作符跟SQL語法的in類似但不同的是,in只需滿足()內(nèi)的某一個值即可,而$all必
須滿足[]內(nèi)的所有值例如:
db.users.find({age:{$all:[6,8]}});
可以查詢出{name:'David',age:26,age:[6,8,9]}
但查詢不出{name:'David',age:26,age:[6,7,9]}
2、$mod取模運算
查詢age取模10等于0的數(shù)據(jù)
db.student.find({age:{$mod:[10,1]}})
舉例如下:
C1表的數(shù)據(jù)如下:
1
2
3
4
|
> db.c1. find () { "_id" : ObjectId( "4fb4af85afa87dc1bed94330" ), "age" : 7, "length_1" : 30 } { "_id" : ObjectId( "4fb4af89afa87dc1bed94331" ), "age" : 8, "length_1" : 30 } { "_id" : ObjectId( "4fb4af8cafa87dc1bed94332" ), "age" : 6, "length_1" : 30 } |
查詢age取模6等于1的數(shù)據(jù)
1
2
|
> db.c1. find ({age: {$mod : [ 6 , 1 ] } }) { "_id" : ObjectId( "4fb4af85afa87dc1bed94330" ), "age" : 7, "length_1" : 30 } |
可以看出只顯示出了age取模6等于1的數(shù)據(jù)其它不符合規(guī)則的數(shù)據(jù)并沒有顯示出來
3、$size數(shù)組元素個數(shù)
對于{name:'David',age:26,favorite_number:[6,7,9]}記錄
匹配db.users.find({favorite_number:{$size:3}});
不匹配db.users.find({favorite_number:{$size:2}});
4、$slice取數(shù)組中指定段的記錄

5、$看實例吧
結(jié)果這樣
四、存儲過程
MongoDB存儲過程是存儲在db.system.js表中的我們想象一個簡單的sql自定義函數(shù)如下
存儲過程的定義查看和執(zhí)行

本文出自 “phper-每天一點點~” 博客,請務必保留此出處http://janephp.blog.51cto.com/4439680/1322792