<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    The NoteBook of EricKong

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

    MongoDB使用手冊

    一、安裝包下載地址

         http://www.mongodb.org/downloads

    二、服務器端使用

    LINUX版本:

    ①用tar -zxvf mongodb-linux-x86_64-1.2.4.tgz解壓開安裝包

    mkdir -p /data/db  創建目錄

    cd /data/db 進入db目錄下   然后創建mkdir m_data m_log

    ④進入mongodb解壓目錄的bin目錄下,用

    ./mongod -fork --dbpath=./data/db/m_data/ --logpath=./m_log.log  --logappend --port=27017 &  啟動服務器。

    WINDOW版本:

    執行如下命令啟動服務器:

    mongod --bind_ip 127.0.0.1 --logpath d:\data\logs --logappend --dbpath d:\data\db  --directoryperdb –install

    【注:將mongodb安裝成服務,裝該服務綁定到IP127.0.0.1,日志文件為d:\data\logs,以及添加方式記錄。數據目錄為d:\data\db。并且每個數據庫將儲存在一個單獨的目錄(--directoryperdb)】

    三、客戶端使用:

    LINUX版本:

    進入MongoDBbin目錄下,使用./mongo進入命令行行下 然后即可進行增刪改查等日常操作。

    WINDOW版本:

    進入mongodbbin目錄下,使用mongo.exe --host IP  --port 端口連接到MongoDB服務器上

    四、MongDB停止

    LINUX版本:

          如果在shell窗口下可以直接按“CTRL+C”,如果是作為后臺服務使用時,可以先使用  ps -ef |grep mongod查詢出服務器的pid,然后使用kill -9 pid    此處的Pid為查詢出的pid

    WINDOW版本:

           如果在命令窗口下直接按“CTRL+C”,如果是作為系統服務來使用的話,需要到服務管理中停止服務或者在window管理器中終止進程。

    五、web版本的統計服務狀態

        使用http://IP(服務器IP:端口即可

    六、語法

    1、基本操作

    db.AddUser(username,password) 添加用戶

    db.auth(usrename,password) 設置數據庫連接驗證

    db.cloneDataBase(fromhost) 從目標服務器克隆一個數據庫

    db.commandHelp(name) returns the help for the command

    db.copyDatabase(fromdb,todb,fromhost) 復制數據庫fromdb---源數據庫名稱,todb---目標數據庫名稱,fromhost---源數據庫服務器地址

    db.createCollection(name,{size:3333,capped:333,max:88888}) 創建一個數據集,相當于一個表

    db.currentOp() 取消當前庫的當前操作

    db.dropDataBase() 刪除當前數據庫

    db.eval(func,args) run code server-side

    db.getCollection(cname) 取得一個數據集合,同用法:db['cname'] or

    db.getCollenctionNames() 取得所有數據集合的名稱列表

    db.getLastError() 返回最后一個錯誤的提示消息

    db.getLastErrorObj() 返回最后一個錯誤的對象

    db.getMongo() 取得當前服務器的連接對象get the server

    db.getMondo().setSlaveOk() allow this connection to read from then nonmaster membr of a replica pair

    db.getName() 返回當操作數據庫的名稱

    db.getPrevError() 返回上一個錯誤對象

    db.getProfilingLevel()

    db.getReplicationInfo() 獲得重復的數據

    db.getSisterDB(name) get the db at the same server as this onew

    db.killOp() 停止(殺死)在當前庫的當前操作

    db.printCollectionStats() 返回當前庫的數據集狀態

    db.printReplicationInfo()

    db.printSlaveReplicationInfo()

    db.printShardingStatus() 返回當前數據庫是否為共享數據庫

    db.removeUser(username) 刪除用戶

    db.repairDatabase() 修復當前數據庫

    db.resetError()

    db.runCommand(cmdObj) run a database command. if cmdObj is a string, turns it into {cmdObj:1}

    db.setProfilingLevel(level) 0=off,1=slow,2=all

    db.shutdownServer() 關閉當前服務程序

    db.version() 返回當前程序的版本信息

    2、數據集()操作

    db.test.find({id:10}) 返回test數據集ID=10的數據集

    db.test.find({id:10}).count() 返回test數據集ID=10的數據總數

    db.test.find({id:10}).limit(2) 返回test數據集ID=10的數據集從第二條開始的數據集

    db.test.find({id:10}).skip(8) 返回test數據集ID=10的數據集從0到第八條的數據集

    db.test.find({id:10}).limit(2).skip(8) 返回test數據集ID=1=的數據集從第二條到第八條的數據

    db.test.find({id:10}).sort() 返回test數據集ID=10的排序數據集

    db.test.findOne([query]) 返回符合條件的一條數據

    db.test.getDB() 返回此數據集所屬的數據庫名稱

    db.test.getIndexes() 返回些數據集的索引信息

    db.test.group({key:...,initial:...,reduce:...[,cond:...]})

    db.test.mapReduce(mayFunction,reduceFunction,<optional params>)

    db.test.remove(query) 在數據集中刪除一條數據

    db.test.renameCollection(newName) 重命名些數據集名稱

    db.test.save(obj) 往數據集中插入一條數據

    db.test.stats() 返回此數據集的狀態

    db.test.storageSize() 返回此數據集的存儲大小

    db.test.totalIndexSize() 返回此數據集的索引文件大小

    db.test.totalSize() 返回些數據集的總大小

    db.test.update(query,object[,upsert_bool]) 在此數據集中更新一條數據

    db.test.validate() 驗證此數據集

    db.test.getShardVersion() 返回數據集共享版本號

    3、MongoDB語法與現有關系型數據庫SQL語法比較

    MongoDB語法 MySql語法

    db.test.find({'name':'foobar'}) <==> select * from test where name='foobar'

    db.test.find() <==> select * from test

    db.test.find({'ID':10}).count() <==> select count(*) from test where ID=10

    db.test.find().skip(10).limit(20) <==> select * from test limit 10,20

    db.test.find({'ID':{$in:[25,35,45]}}) <==> select * from test where ID in (25,35,45)

    db.test.find().sort({'ID':-1}) <==> select * from test order by ID desc

    db.test.distinct('name',{'ID':{$lt:20}}) <==> select distinct(name) from test where ID<20

    db.test.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}}) <==> select name,sum(marks) from test group by name

    db.test.find('this.ID<20',{name:1}) <==> select name from test where ID<20

    db.test.insert({'name':'foobar','age':25})<==>insert into test ('name','age') values('foobar',25)

    db.test.remove({}) <==> delete * from test

    db.test.remove({'age':20}) <==> delete test where age=20

    db.test.remove({'age':{$lt:20}}) <==> elete test where age<20

    db.test.remove({'age':{$lte:20}}) <==> delete test where age<=20

    db.test.remove({'age':{$gt:20}}) <==> delete test where age>20

    db.test.remove({'age':{$gte:20}}) <==> delete test where age>=20

    db.test.remove({'age':{$ne:20}}) <==> delete test where age!=20

    db.test.update({'name':'foobar'},{$set:{'age':36}}) <==> update test set age=36 where name='foobar'

    db.test.update({'name':'foobar'},{$inc:{'age':3}}) <==> update test set age=age+3 where

    name='foobar'

     

    4、 

     

    七、MongoDB主從復制介紹

    MongoDB的主從復制其實很簡單,就是在運行 主的服務器 上開啟mongod進程 時,加入參數--master即可,在運行從的服務 器上開啟mongod進程時,加入--slave --source 指定主即可,這樣,在主數據 庫更新時,數據被復制到從數據庫



    (這里日志 文件 和訪問 數據時授權用戶暫時不考慮 )

    下面我在單臺服務器上開啟2 deamon來模擬2臺服務器進行主從復制:

    $ mkdir m_master m_slave

    $mongodb/bin/mongod  --port  28018 --dbpath ~/m_master  --master  &

    $mongodb/bin/mongod  --port  28019 --dbpath ~/m_slave  --slave  --source   localhost:28018  &

    這樣主從服務器都已經啟動了,可以利用 netstat -an -t 查看2801828019端口 是否開放

    登錄主服務器:

    $ mongodb/bin/mongo --port 28018

    MongoDB shell version: 1.2.4-

    url: test

    connecting to: 127.0.0.1:28018/test

    type "help" for help

    > show dbs

    admin

    local

    test

    > use test

    switched to db test

    > show collections

    這里主上的test數據什么表都沒有,為空,查看從服 務器同樣也是這樣

    $ mongodb/bin/mongo --port 28019

    MongoDB shell version: 1.2.4-

    url: test

    connecting to: 127.0.0.1:28019/test

    type "help" for help

    > show dbs

    admin

    local

    test

    > use test

    switched to db test

    > show collections

    那么現在我們來驗證主從數據是否會像想象的那樣同步 呢?

    我們在主上新建表user

    > db  

    test

    >db.createCollection("user");

    > show collections           

    system.indexes

    user

    user已經存在了,而且test庫中還多了一個system.indexes用來存放索引的表



    到從服務器上查看test庫:

    > db  

    test

    > show collections           

    system.indexes

    User

    > db.user.find();

    服務器的test庫中user表已經存在,同時我還查了一下user表為空

    現在我們再來測試一下,向主服務器test庫的user表中插入一條數據

    > show collections           

    system.indexes

    user

    > db.user.insert({uid:1,name:"Falcon.C",age:25});

    > db.user.find();                               

    { "_id" : ObjectId("4b8226a997521a578b7aea38"), "uid" : 1, "name" : "Falcon.C", "age" : 25 }

    時我們查看從服務器的testuser表時會多出一條記錄來:

    > db.user.find();

    { "_id" : ObjectId("4b8226a997521a578b7aea38"), "uid" : 1, "name" : "Falcon.C", "age" : 25 }

    MongoDB 還有 Replica Pairs Master - Master

    參考地址:http://www.mongodb.org/display/DOCS/Master+Slave



    MongoDB一般情況下都可以支持主主復制,但是在大部分情況下官方不推薦使用

    運行 master - master的準備工作是:

    新建存放數據 庫文件 的路徑

    $mkdir mongodata/mm_28050 mongodata/mm_28051

    運行mongodb數據庫 ,一個端口 為:28050,一個為:28051

    $ mongodb/bin/mongod --port 28050 --dbpath ~/mongodata/mm_28050 --master --slave --source localhost:28051 > /dev/null &

    $ mongodb/bin/mongod --port 28051 --dbpath ~mongodata/mm_28051 --master --slave --source localhost:28050 > /dev/null &

    可以通過ps -ef|grep mongod netstat -an -t來檢查是否運行功能



    測試master - master模式

    $ mongodb/bin/mongo --port 28050

    MongoDB shell version: 1.2.4-

    url: test

    connecting to: 127.0.0.1:28050/test

    type "help" for help

    > show dbs

    admin

    local

    > db

    test

    > db.user.insert({_id:1,username:"Falcon.C",age:25,sex:"M"});

    > db.user.find();

    { "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }

    > db.user.find();  //28051端口插入數據后,再來查詢,看數據是否同步

    { "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }

    { "_id" : 2, "username" : "NetOne", "age" : 24, "sex" : "F" }

    $ mongodb/bin/mongo --port 28051

    MongoDB shell version: 1.2.4-

    url: test

    connecting to: 127.0.0.1:28051/test

    type "help" for help

    > db

    test

    > show collections         端口28050已經新建了一個user表并插入了一條數據,這里多出2

    system.indexes

    user

    > db.user.find();        //查詢表user發現數據已經同步

    { "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }

    > db.user.insert({_id:2,username:"NetOne",age:24,sex:"F"});在此插入數據看數據是否雙向同步

    > db.user.find();  

    { "_id" : 1, "username" : "Falcon.C", "age" : 25, "sex" : "M" }

    { "_id" : 2, "username" : "NetOne", "age" : 24, "sex" : "F" }

    過以上開啟兩終端分別連接到2805028051端口,分別插入測試數據發現,一切正常,正如我們所想的那樣實現數據的雙向同步

     

    八、 

    posted on 2014-11-19 18:28 Eric_jiang 閱讀(169) 評論(0)  編輯  收藏 所屬分類: MongoDB

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 久久国产精品成人免费| 无码日韩人妻av一区免费| 久久精品国产亚洲av影院| AV大片在线无码永久免费| 国产成人久久精品亚洲小说| 亚洲精品国产日韩无码AV永久免费网 | 免费无码一区二区三区蜜桃大| 高潮毛片无遮挡高清免费| 亚洲午夜未满十八勿入网站2| 99久久精品免费视频| 国产成人综合久久精品亚洲| 亚洲精品无码久久一线| 色窝窝免费一区二区三区| yellow视频免费在线观看| 亚洲欧洲国产经精品香蕉网| 亚洲成av人片一区二区三区| 24小时日本韩国高清免费| 午夜不卡AV免费| 亚洲春色另类小说| 中文字幕久久亚洲一区 | 国产伦精品一区二区三区免费迷| 2022国内精品免费福利视频| 亚洲人成综合在线播放| 亚洲中文字幕无码久久综合网| 国产情侣激情在线视频免费看| v片免费在线观看| 日韩亚洲人成在线| 久久精品国产亚洲AV高清热| 大胆亚洲人体视频| 97无码免费人妻超级碰碰碰碰| 国产精成人品日日拍夜夜免费| 污网站免费在线观看| 亚洲人成网站色在线观看| 久久精品国产精品亚洲艾| 亚洲第一黄片大全| 日本免费一区二区三区最新vr| 69免费视频大片| 久久久国产精品福利免费| 好猛好深好爽好硬免费视频| 日韩亚洲翔田千里在线| 亚洲中文字幕一二三四区苍井空 |