MongoDB是一個文檔型資料庫,是NOSQL家族中最重要的成員之一,以下代碼封裝了MongoDB的基本操作。MongoDBConfig.javapackage com.posoftframework.mongodb;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.util.Enumeration;import java.util.HashMap;import
讀取db.collection.find()db.users.find( { age: {$gt: 18}}, {name: 1, address: 1}).limit(5).sort({age:1})users是collection名字,從users中尋找;age是query criteria,篩選結果,代表尋找name欄位的值比18大的;name是projection,篩選列(1代表存在,
這一篇我們以管理員的視角來看mongodb,作為一名管理員,我們經常接觸到的主要有4個方面:1. 安裝部署2. 狀態監控3. 安全認證4. 備份和恢複,下面我們就一點一點的講解。一:安裝部署
在mongodb裡面存在另一種叢集,就是分區技術,跟sql server的表分區類似,我們知道當資料量達到T層級的時候,我們的磁碟,記憶體就吃不消了,針對這樣的情境我們該如何應對。 一:分區
從這一篇開始我們主要討論mongodb的部署技術。 我們知道sql server能夠做到讀寫分離,雙機熱備份和叢集部署,當然mongodb也能做到,實際應用中我們不希望資料庫採用單點部署,如果碰到資料庫宕機或者被毀滅性破壞那是多麼的糟糕。 一:主從複製1: 首先看看模型圖 2: 從上面的圖形中我們可以分析出這種架構有如下的好處: <1>
這些天項目改版,時間比較緊,部落格也就沒跟得上,還望大家見諒。 好,今天分享下mongodb中關於索引的基本操作,我們日常做開發都避免不了要對程式進行效能最佳化,而程式的操作無非就是CURD,通常我們又會花費50%的時間在R上面,因為Read操作對使用者來說是非常敏感的,處理不好就會被人唾棄,呵呵。
今天跟大家分享一下mongodb中比較好玩的知識,主要包括:彙總,遊標。一: 彙總 常見的彙總操作跟sql server一樣,有:count,distinct,group,mapReduce。<1> count count是最簡單,最容易,也是最常用的彙總工具,它的使用跟我們C#裡面的count使用簡直一模一樣。 <2> distinct
看過上一篇,相信大家都會知道如何開啟mongodb了,這篇就細說下其中的增刪查改,首先當我們用上一篇同樣的方式開啟mongodb,突然傻眼了,擦,竟然開啟不了,仔細觀察“劃線地區“的資訊,發現db檔案夾下有一個類似的”lock file”阻止了mongodb的開啟,接下來我們要做的就是幹掉它,之後,開啟成功,關於mongodb的管理方式將在後續文章分享。 一: Insert操作
關於mongodb的好處,優點之類的這裡就不說了,唯一要講的一點就是mongodb中有三元素:資料庫,集合,文檔,其中“集合”就是對應關聯式資料庫中的“表”,“文檔”對應“行”。 一: 下載 上MongoDB官網 ,我們發現有32bit和64bit,這個就要看你系統了,不過這裡有兩點注意: ①:根據業界規則,偶數為“穩定版”(如:1.
1. 建立一個超級使用者use admindb.createUser( { user: "adminUserName", pwd: "userPassword", roles: [ { roles: "userAdminAnyDatabase", db: "admin" } ]
按照官網上的安裝方法:在ubuntu系統下有可能出現如下錯誤:couldn't remove fs lock errno:9 Bad file descriptor此時需要修改檔案所有者$ sudo mkdir -p /data/db/$ sudo chown 'USERNAME‘
建立索引有時會阻塞新的串連當與mongodb複製集建立串連時,驅動程式首先嘗試串連並驗證叢集中每個非 隱藏的節點。如果一個節點是“down”狀態,將跳過。然而,如果一個節點是“UP”狀態,但是持有寫鎖,那麼驗證將沒法執行下去,因此該驅動程式將被掛起了。在mongodb
1,錯誤做法,直接更新表> db.system.users.update({"_id" : ObjectId("529e67553992b24438d5e315")},{"user":"tank2","readOnly" : false,"pwd":"123"}) > db.system.users.find(); { "_id" : ObjectId("529e5f8474b4c660718a70f3"), "user" : "tank1", "readOnly" : false,
1,查看資料庫> db.stats(); { "db" : "test", //當前資料庫 "collections" : 3, //當前資料庫多少表 "objects" : 4, //當前資料庫所有表多少條資料 "avgObjSize" : 51, //每條資料的平均大小 "dataSize" : 204, //所有資料的總大小 "storageSize" : 16384, //所有資料占的磁碟大小
mongodb的多伺服器配置,以前寫過一篇文章,是master-slave模式的,請參考:詳解mongodb 主從配置。master-slave模式,不能自動實現容錯移轉和恢複。所以推薦大家使用mongodb的replica set,來實現多伺服器的高可用。給我的感覺是replica
一,利用rs.reconfig,來添加,刪除節點1,添加節點repmore:PRIMARY> config = {_id:"repmore",members:[{_id:0,host:'127.0.0.1:27017',priority :2},{_id:1,host:'127.0.0.1:27018',priority:1}]}; //添加節點 repmore:PRIMARY> rs.reconfig(config); //使配置生效 repmore:PRIMARY>
前面說了到資料庫連接操作,請參考:mongodb 添加使用者及使用權限設定詳解對資料庫的操作:請參考:mongodb 資料庫操作詳解--建立,切換,刪除下面說一下,資料庫表的插入操作1,命令列下的insert操作> use test; #切換到test資料庫 switched to db test > document=({"title" : "linux命令", "auther" : "tank" }); #定義了一個變數 { "title" : "linux命令",
一,mongodump備份資料庫1,常用命令格mongodump -h IP --port 連接埠 -u 使用者名稱 -p 密碼 -d 資料庫 -o 檔案存在路徑 如果沒有使用者誰,可以去掉-u和-p。如果匯出原生資料庫,可以去掉-h。如果是預設連接埠,可以去掉--port。如果想匯出所有資料庫,可以去掉-d。2,匯出所有資料庫[root@localhost mongodb]# mongodump -h 127.0.0.1 -o /home/zhangy/mongodb/ connected
一,mongodb主從伺服器192.168.1.5 mongodb主伺服器192.168.1.108 mongodb從伺服器二,mongodb主從伺服器安裝[root@localhost ~]# yum install php-pecl-mongo mongodb
一,安裝mongodb,php擴充[root@localhost ~]# yum install php-pecl-mongo mongodb mongodb-devel mongodb-server php擴充,mongodb服務端,mongodb客戶就裝好了。二,配置/etc/mongodb.conf[root@localhost www]# cat /etc/mongodb.conf |awk '{if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'