MongoDB實戰(2)工具集與特殊魔術方法

來源:互聯網
上載者:User

一、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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.