一、MongoDB啟動方式
MongoDB除了支援命令列的啟動方式還支援設定檔啟動通過讀取啟動設定檔的方式來啟動資料庫比方說設定檔如下
則可以使用如下命令 ./mongod -f /etc/mongodb.conf
MongoDB參數說明
dbpath: 資料檔案存放路徑每個資料庫會在其中建立一個子目錄用於防止同一個執行個體多次啟動並執行mongod.lock也儲存在此目錄中。 logpath 錯誤記錄檔檔案 logappend 錯誤記錄檔採用追加模式預設是覆寫入模式 bind_ip 對外服務的綁定ip一般設定為空白及綁定在本機所有可用ip上如有需要可以單獨指定 port 對外服務連接埠。Web管理連接埠在這個port的基礎上+1000 fork 以後台Daemon形式運行服務 journal 開啟日誌功能通過儲存動作記錄來降低單機故障的恢復在1.8版本後正式加入取代在1.7.5版本中的dur參數。 syncdelay 系統同步重新整理磁碟的時間單位為秒預設是60秒。 directoryperdb 每個db存放在單獨的目錄中建議設定該參數。與MySQL的獨立資料表空間類似 maxConns 最大串連數 repairpath 執行repair時的臨時目錄。在如果沒有開啟journal異常down機後重啟必須執行repair 操作。
停止資料庫這裡有一點需要注意
使用kill-2或者pkill都可以但是不要使用kill-9來殺死MongoDB進程這樣會導致MongoDB的資料損毀。
二、常用工具集
MongoDB在bin目錄下提供了一系列有用的工具這些工具提供了MongoDB在營運管理上的方便。 bsondump:將bson格式的檔案轉儲為json格式的資料 mongo:用戶端命令列工具其實也是一個js解譯器支援js文法 mongod:資料庫服務端每個執行個體啟動一個進程可以fork為後台運行 mongodump/mongorestore:Database Backup和恢複工具 mongoexport/mongoimport:資料匯出和匯入工具 mongofiles:GridFS管理工具可實現二制檔案的存取 mongos:分區路由如果使用了sharding功能則應用程式串連的是mongos而不是 mongod mongosniff:這一工具的作用類似於tcpdump不同的是他只監控MongoDB相關的包請求並且是以指定的可讀性的形式輸出 mongostat:即時效能監控工具
三、一些很重要的魔術方法
1、$all匹配所有這個操作符跟SQL文法的in類似但不同的是,in只需滿足()內的某一個值即可,而$all必須滿足[]內的所有值例如: 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的資料 db.student.find({age:{$mod:[10,1]}}) 舉例如下: C1表的資料如下: > 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的資料 > db.c1.find({age: {$mod : [ 6 , 1 ] } }) { "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }
可以看出只顯示出了age模數6等於1的資料其它不符合規則的資料並沒有顯示出來
3、$size數組元素個數對於{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取數組中指定段的記錄
db.posts.find({},{comments:{$slice:5}})
db.posts.find({},{comments:{$slice:[20,10]}})
5、$看執行個體吧
{"_id":1,"semester":1,"grades":[70,87,90]}
{"_id":2,"semester":1,"grades":[90,88,92]}
{"_id":3,"semester":1,"grades":[85,100,90]}
{"_id":4,"semester":2,"grades":[79,85,80]}
{"_id":5,"semester":2,"grades":[88,88,92]}
{"_id":6,"semester":2,"grades":[95,90,96]}
db.students.find({semester:1,grades:{$gte:85}},{"grades.$":1})
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/extra/
結果這樣
{"_id":1,"grades":[87]}
{"_id":2,"grades":[90]}
{"_id":3,"grades":[85]}
四、預存程序
MongoDB預存程序是儲存在db.system.js表中的我們想象一個簡單的sql自訂函數如下
預存程序的定義查看和執行
本文出自 “phper-每天一點點~” 部落格,請務必保留此出處http://janephp.blog.51cto.com/4439680/1322792