1. 程式人生 > >linux下配置安裝mongodb

linux下配置安裝mongodb

  • 在官網http://www.mongodb.org/downloads下載mongodb
  • 解壓 tar xzf mongodb-linux-x86_64-2.4.8.tgz
  • 建立mongodb存放的資料檔案,我是在壓縮後的當前目錄建立dada/mongodb 
    • sudo mkdir data
    • cd data
    • mkdir mongodb
  • 進入mongodb-linux-x86_64-2.4.8/bin,啟動mongodb
    • 輸入命令:/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/bin/mongod --dbpath=/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/data/mongodb/ --logpath=/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/logs --logappend --port=27017 --fork
    • 然後過一段時間就會出現:about to fork child process, waiting until server is ready for connections.
      forked process: 29517
      all output going to: /home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/logs
      child process started successfully, parent exiting
    • 設定mongodb自動啟動,將如下命令新增到 /etc/rc.local:/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/bin/mongod --dbpath=/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/data/mongodb/ --logpath=/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/logs --logappend --port=27017 --fork

    • 檢查埠是否啟動,埠為:27017
    • 在bin資料夾執行mongo檢視安裝是否成功
    • connecting to: test,test是預設的一個collection,在mongodb中,collection相當於關係型資料庫的表,但並不需提前建立,更不需要預先定義欄位,更多關於coolection可以檢視http://blog.csdn.net/kingfengks/article/details/6067429
  • (可選)在安裝mongodb的使用者下新增如下環境變數,以便直接使用mongodb bin目錄下的命令
    PATH=$PATH:$HOME/bin:/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/bin 
  • 以下是mongodb啟動時的常用引數說明:
--bind_ip 繫結IP,繫結後只能繫結的IP訪問服務
--dbpath 指定資料庫目錄
--port 指定資料庫埠,預設是27107
--logpath 指定日誌存放目錄
--logappend 使用追加的方式寫日誌
--pidfilepath 指定程序檔案,不指定則不產生程序檔案
--journal 啟用日誌
--maxConns 最大的併發連線數,預設2000
--fork 將服務放到後臺執行
--notablescan 不允許表掃描

--syncdelay 資料寫入硬碟的時間(秒),0是不等待,直接寫入

  • shell操作資料庫:
    • 1.  超級使用者相關: 
               1. #進入資料庫admin 
                use admin 
               2. #增加或修改使用者密碼 
                db.addUser('name','pwd') 
               3. #檢視使用者列表 
                db.system.users.find() 
               4. #使用者認證 
                db.auth('name','pwd') 
               5. #刪除使用者 
                db.removeUser('name') 
               6. #檢視所有使用者 
                show users 
               7. #檢視所有資料庫 
                show dbs 
               8. #檢視所有的collection 
                show collections 
               9. #檢視各collection的狀態 
                db.printCollectionStats() 
              10. #檢視主從複製狀態 
                db.printReplicationInfo() 
              11. #修復資料庫 
                db.repairDatabase() 
              12. #設定記錄profiling,0=off 1=slow 2=all 
                db.setProfilingLevel(1) 
              13. #檢視profiling 
                show profile 
              14. #拷貝資料庫 
                db.copyDatabase('mail_addr','mail_addr_tmp') 
              15. #刪除collection 
                db.mail_addr.drop() 
              16. #刪除當前的資料庫 
                db.dropDatabase() 
  • 2. 增刪改 (其中下面的foo與user_addr為collection)
             1. #儲存巢狀的物件 
                db.foo.save({'name':'ysz','address':{'city':'beijing','post':100096},'phone':[138,139]}) 
             2. #儲存陣列物件 
                db.user_addr.save({'Uid':'[email protected]','Al':['[email protected]','[email protected]']}) 
             3. #根據query條件修改,如果不存在則插入,允許修改多條記錄 
                db.foo.update({'yy':5},{'$set':{'xx':2}},upsert=true,multi=true) 
             4. #刪除yy=5的記錄 
                db.foo.remove({'yy':5}) 
             5. #刪除所有的記錄 
                db.foo.remove() 
  •    3. 索引 (其中下面的foo與user_addr為collection)
             1. #增加索引:1(ascending),-1(descending) 
             2. db.foo.ensureIndex({firstname: 1, lastname: 1}, {unique: true}); 
             3. #索引子物件 
             4. db.user_addr.ensureIndex({'Al.Em': 1}) 
             5. #檢視索引資訊 
             6. db.foo.getIndexes() 
             7. db.foo.getIndexKeys() 
             8. #根據索引名刪除索引 
             9. db.user_addr.dropIndex('Al.Em_1') 
  • 4. 查詢 (其中下面的foo與user_addr為collection)
             1. #查詢所有 
            2. db.foo.find() 
            3. #查詢一條記錄 
            4. db.foo.findOne() 
            5. #根據條件檢索10條記錄 
            6. db.foo.find({'msg':'Hello 1'}).limit(10) 
            7. #sort排序 
            8. db.deliver_status.find({'From':'[email protected]'}).sort({'Dt',-1}) 
             9. db.deliver_status.find().sort({'Ct':-1}).limit(1) 
            10. #count操作 
            11. db.user_addr.count() 
            12. #distinct操作,查詢指定列,去重複 
            13. db.foo.distinct('msg') 
            14. #”>=”操作 
            15. db.foo.find({"timestamp": {"$gte" : 2}}) 
            16. #子物件的查詢 
            17. db.foo.find({'address.city':'beijing'}) 
  •    5. 管理  (其中下面的deliver_status為collection)
             1. #檢視collection資料的大小 
             2. db.deliver_status.dataSize() 
             3. #檢視colleciont狀態 
             4. db.deliver_status.stats() 
             5. #查詢所有索引的大小 
             6. db.deliver_status.totalIndexSize()