mongodb是nosql里面最像關系型數據庫的數據庫。單表操作,基本上可以和關系型數據庫差不多。mongodb比較易學,易用,分幾期記錄一下,學習和使用mongodb過程。
mongodb安裝就不說了,請參考:centos yum 安裝 mongodb 以及php擴展
一,創建,切換,刪除數據庫
- [root@localhost zhangy]# mongo
- MongoDB shell version: 2.4.6
- connecting to: tank
- > use test //創建 or 切換數據庫
- switched to db test
- > db.dropDatabase() //刪除數據庫
- { "dropped" : "test", "ok" : 1 }
二,php創建,切換,刪除數據庫
1,切換數據庫
- $mongo = new Mongo();
- $db = $mongo->selectDB('test'); //切換數據庫
2,創建數據庫
- $mongo = new Mongo();
- $db = $mongo->selectDB('test');
- $users = $db->createCollection("users");
- $alldb = $mongo->listDBs(); //列出所有數據庫
- print_r($alldb); //可以看到db創建成功了
在這里要注意一下,如果你不創建一個collection(根關系型數據庫的表基本上是一樣的),是創建不了數據庫的。
3,刪除數據庫
- $mongo = new Mongo();
- $db = $mongo->selectDB('test');
- $db->drop();
三,小節
這篇文章很簡單吧,哈哈,不想在一篇文章里面寫太多的東西,折開來寫,看的更清楚一點,更細一點。
在這兒要提一下,mongodb命令下的幫助,這個對于命令行操作很有幫助。
1,db的幫助
- 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() 獲取profile level
- 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) 設置profile level 0=off,1=slow,2=all
- db.shutdownServer() 關閉當前服務程序
- db.version() 返回當前程序的版本信息
2,表的幫助,格式,db.表名.help()
- 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() 返回數據集共享版本號
新聞熱點
疑難解答