1. 程式人生 > >關於mongodb的一些命令

關於mongodb的一些命令

MongoDb 命令查詢所有資料庫列表  
  
CODE:  
  
> show dbs  
  
如果想檢視當前連線在哪個資料庫下面,可以直接輸入db  
CODE:  
  
> db  
Admin  
想切換到test資料庫下面  
CODE:  
  
> use test  
switched to db test  
> db  
Test  
想檢視test下有哪些表或者叫collection,可以輸入  
CODE:  


> show collections  
system.indexes  
user  
想知道mongodb支援哪些命令,可以直接輸入help  
CODE:  
> help  
Dos程式碼  收藏程式碼  
  
    HELP    
          show dbs                     show database names    
          show collections             show collections in current database    
          show users                   show users in current database    
          show profile                 show most recent system.profile entries with time >= 1ms    
          use <db name>                set curent database to <db name>    
          db.help()                    help on DB methods    
          db.foo.help()                help on collection methods    
          db.foo.find()                list objects in collection foo    
          db.foo.find( { a : 1 } )     list objects in foo where a == 1    
          it                           result of the last line evaluated; use to further iterate    
  
如果想知道當前資料庫支援哪些方法:  
CODE:  



> db.help();  
Java程式碼  收藏程式碼  
  
    DB methods:    
          db.addUser(username, password) 新增資料庫授權使用者    
          db.auth(username, password)                訪問認證    
          db.cloneDatabase(fromhost) 克隆資料庫    
          db.commandHelp(name) returns the help for the command    
          db.copyDatabase(fromdb, todb, fromhost)  複製資料庫    
          db.createCollection(name, { size : ..., capped : ..., max : ... } ) 建立表    
          db.currentOp() displays the current operation in the db    
          db.dropDatabase()        刪除當前資料庫    
          db.eval_r(func, args) run code server-side    
          db.getCollection(cname) same as db['cname'] or db.cname    
          db.getCollectionNames()        獲取當前資料庫的表名    
          db.getLastError() - just returns the err msg string    
          db.getLastErrorObj() - return full status object    
          db.getMongo() get the server connection object    
          db.getMongo().setSlaveOk() allow this connection to read from the nonmaster member 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() kills the current operation in the db    
          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() current version of the server    

如果想知道當前資料庫下的表或者表collection支援哪些方法,可以使用一下命令如:  
CODE:  
  
> db.user.help();  user為表名  
Java程式碼  收藏程式碼  
  
    DBCollection help    
          db.foo.count()                統計表的行數    
          db.foo.dataSize()        統計表資料的大小    
          db.foo.distinct( key ) - eg. db.foo.distinct( 'x' )                按照給定的條件除重    
          db.foo.drop() drop the collection 刪除表    
          db.foo.dropIndex(name)  刪除指定索引    
          db.foo.dropIndexes() 刪除所有索引    
          db.foo.ensureIndex(keypattern,options) - options should be an object with these possible fields: name, unique, dropDups  增加索引    
          db.foo.find( [query] , [fields]) - first parameter is an optional query filter. second parameter is optional set of fields to return.     
  
  
根據條件查詢資料  
-----------------------  
通過條件查詢: db.foo.find( { x : 77 } , { name : 1 , x : 1 } )  
-----------------------------  

如果想知道當前資料庫下的表或者表collection支援哪些方法,可以使用一下命令如:  
CODE:  
  
> db.user.help();  user為表名  
Java程式碼  收藏程式碼  
  
    DBCollection help    
          db.foo.count()                統計表的行數    
          db.foo.dataSize()        統計表資料的大小    
          db.foo.distinct( key ) - eg. db.foo.distinct( 'x' )                按照給定的條件除重    
          db.foo.drop() drop the collection 刪除表    
          db.foo.dropIndex(name)  刪除指定索引    
          db.foo.dropIndexes() 刪除所有索引    
          db.foo.ensureIndex(keypattern,options) - options should be an object with these possible fields: name, unique, dropDups  增加索引    
          db.foo.find( [query] , [fields]) - first parameter is an optional query filter. second parameter is optional set of fields to return.     
  
  
根據條件查詢資料  
-----------------------  
通過條件查詢: db.foo.find( { x : 77 } , { name : 1 , x : 1 } )  
-----------------------------  
             instead of connecting to a mongod instance  
-v [ --verbose ]         be more verbose (include multiple times for more  
                         verbosity e.g. -vvvvv)  
-o [ --out ] arg (=dump) output directory  
[
[email protected]
~/mongodb/bin]$ ./mongodump -d test -o test/ connected to: 127.0.0.1 DATABASE: test to test/test test.user to test/test/user.bson 100000 objects test.system.indexes to test/test/system.indexes.bson 1 objects [[email protected]
~/mongodb/bin]$ ls 2 mongo mongodump mongofiles mongorestore mongosniff dump mongod mongoexport mongoimport mongos test MongoDB的資料恢復工具mongorestore 檢視test庫中的表 CODE: > show collections system.indexes User 刪除user表 CODE: > db.user.drop(); True > show collections System.indexes 現在利用mongorestore表恢復剛才利用mongodump備份的資料 CODE: [
[email protected]
~/mongodb/bin]$ ./mongorestore --help usage: ./mongorestore [options] [directory or filename to restore from] options: --help produce help message -h [ --host ] arg mongo host to connect to -d [ --db ] arg database to use -c [ --collection ] arg collection to use (some commands) -u [ --username ] arg username -p [ --password ] arg password --dbpath arg directly access mongod data files in this path, instead of connecting to a mongod instance -v [ --verbose ] be more verbose (include multiple times for more verbosity e.g. -vvvvv) [[email protected] ~/mongodb/bin]$ ./mongorestore -d test -c user test/test/user.bson connected to: 127.0.0.1 test/test/user.bson going into namespace [test.user] 100000 objects User表中的10w條記錄已經恢復 CODE: > show collections system.indexes user > db.user.find(); { "_id" : ObjectId("4b9c8db08ead0e3347000000"), "uid" : 1, "username" : "Falcon.C-1" } { "_id" : ObjectId("4b9c8db08ead0e3347010000"), "uid" : 2, "username" : "Falcon.C-2" } { "_id" : ObjectId("4b9c8db08ead0e3347020000"), "uid" : 3, "username" : "Falcon.C-3" } { "_id" : ObjectId("4b9c8db08ead0e3347030000"), "uid" : 4, "username" : "Falcon.C-4" } { "_id" : ObjectId("4b9c8db08ead0e3347040000"), "uid" : 5, "username" : "Falcon.C-5" } ................. has more 1. 超級使用者相關: #增加或修改使用者密碼 db.addUser('admin','pwd') #檢視使用者列表 db.system.users.find() #使用者認證 db.auth('admin','pwd') #刪除使用者 db.removeUser('mongodb') #檢視所有使用者 show users #檢視所有資料庫 show dbs #檢視所有的collection show collections #檢視各collection的狀態 db.printCollectionStats() #檢視主從複製狀態 db.printReplicationInfo() #修復資料庫 db.repairDatabase() #設定記錄profiling,0=off 1=slow 2=all db.setProfilingLevel(1) #檢視profiling show profile #拷貝資料庫 db.copyDatabase('mail_addr','mail_addr_tmp') #刪除collection db.mail_addr.drop() #刪除當前的資料庫 db.dropDatabase() 2. 客戶端連線 /usr/local/mongodb/bin/mongo user_addr -u user -p 'pwd' 3. 增刪改 #儲存巢狀的物件 db.foo.save({'name':'ysz','address':{'city':'beijing','post':100096},'phone':[138,139]}) #儲存陣列物件 db.user_addr.save({'Uid':'[email protected]','Al':['[email protected]','[email protected]']}) #根據query條件修改,如果不存在則插入,允許修改多條記錄 db.foo.update({'yy':5},{'$set':{'xx':2}},upsert=true,multi=true) #刪除yy=5的記錄 db.foo.remove({'yy':5}) #刪除所有的記錄 db.foo.remove() 4. 索引 增加索引:1(ascending),-1(descending) db.things.ensureIndex({firstname: 1, lastname: 1}, {unique: true}); #索引子物件 db.user_addr.ensureIndex({'Al.Em': 1}) #檢視索引資訊 db.deliver_status.getIndexes() db.deliver_status.getIndexKeys() #根據索引名刪除索引 db.user_addr.dropIndex('Al.Em_1') 5. 查詢 查詢所有 db.foo.find() #查詢一條記錄 db.foo.findOne() #根據條件檢索10條記錄 db.foo.find({'msg':'Hello 1'}).limit(10) #sort排序 db.deliver_status.find({'From':'[email protected]'}).sort({'Dt',-1}) db.deliver_status.find().sort({'Ct':-1}).limit(1) #count操作 db.user_addr.count() #distinct操作 db.foo.distinct('msg') #>操作 db.foo.find({"timestamp": {"$gte" : 2}}) #子物件的查詢 db.foo.find({'address.city':'beijing'}) 6. 管理 檢視collection資料的大小 db.deliver_status.dataSize() #檢視colleciont狀態 db.deliver_status.stats() #查詢所有索引的大小 db.deliver_status.totalIndexSize()