1. 程式人生 > >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程式碼  收藏程式碼
  1. HELP  
  2.       show dbs                     show database names  
  3.       show collections             show collections in current database  
  4.       show users                   show users in current database  
  5.       show profile                 show most recent system.profile entries with time >= 1ms  
  6.       use <db name>                set curent database to <db name>  
  7.       db.help()                    help on DB methods  
  8.       db.foo.help()                help on collection methods  
  9.       db.foo.find()                list objects in collection foo  
  10.       db.foo.find( { a : 1 } )     list objects in foo where a == 1  
  11.       it                           result of the last line evaluated; use to further iterate  
如果想知道當前資料庫支援哪些方法: 
CODE: 

> db.help(); 
Java程式碼  收藏程式碼
  1. DB methods:  
  2.       db.addUser(username, password) 新增資料庫授權使用者  
  3.       db.auth(username, password)                訪問認證  
  4.       db.cloneDatabase(fromhost) 克隆資料庫  
  5.       db.commandHelp(name) returns the help for the command  
  6.       db.copyDatabase(fromdb, todb, fromhost)  複製資料庫  
  7.       db.createCollection(name, { size : ..., capped : ..., max : ... } ) 建立表  
  8.       db.currentOp() displays the current operation in the db  
  9.       db.dropDatabase()        刪除當前資料庫  
  10.       db.eval_r(func, args) run code server-side  
  11.       db.getCollection(cname) same as db['cname'] or db.cname  
  12.       db.getCollectionNames()        獲取當前資料庫的表名  
  13.       db.getLastError() - just returns the err msg string  
  14.       db.getLastErrorObj() - return full status object  
  15.       db.getMongo() get the server connection object  
  16.       db.getMongo().setSlaveOk() allow this connection to read from the nonmaster member of a replica pair  
  17.       db.getName()  
  18.       db.getPrevError()  
  19.       db.getProfilingLevel()  
  20.       db.getReplicationInfo()  
  21.       db.getSisterDB(name) get the db at the same server as this onew  
  22.       db.killOp() kills the current operation in the db  
  23.       db.printCollectionStats()   列印各表的狀態資訊  
  24.       db.printReplicationInfo()        列印主資料庫的複製狀態資訊  
  25.       db.printSlaveReplicationInfo()        列印從資料庫的複製狀態資訊  
  26.       db.printShardingStatus()                列印分片狀態資訊  
  27.       db.removeUser(username) 刪除資料庫使用者  
  28.       db.repairDatabase() 修復資料庫  
  29.       db.resetError()  
  30.       db.runCommand(cmdObj) run a database command.  if cmdObj is a string, turns it into { cmdObj : 1 }  
  31.       db.setProfilingLevel(level) 0=off 1=slow 2=all  
  32.       db.shutdownServer()  
  33.       db.version() current version of the server  

如果想知道當前資料庫下的表或者表collection支援哪些方法,可以使用一下命令如: 
CODE: 

> db.user.help();  user為表名 
Java程式碼  收藏程式碼
  1. DBCollection help  
  2.       db.foo.count()                統計表的行數  
  3.       db.foo.dataSize()        統計表資料的大小  
  4.       db.foo.distinct( key ) - eg. db.foo.distinct( 'x' )                按照給定的條件除重  
  5.       db.foo.drop() drop the collection 刪除表  
  6.       db.foo.dropIndex(name)  刪除指定索引  
  7.       db.foo.dropIndexes() 刪除所有索引  
  8.       db.foo.ensureIndex(keypattern,options) - options should be an object with these possible fields: name, unique, dropDups  增加索引  
  9.       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 } ) 
----------------------------- 
      db.foo.find(...).count() 
      db.foo.find(...).limit(n) 根據條件查詢資料並返回指定記錄數 
      db.foo.find(...).skip(n) 
      db.foo.find(...).sort(...) 查詢排序 
      db.foo.findOne([query]) 根據條件查詢只查詢一條資料 
      db.foo.getDB() get DB object associated with collection  返回表所屬的庫 
      db.foo.getIndexes() 顯示錶的所有索引 
      db.foo.group( { key : ..., initial: ..., reduce : ...[, cond: ...] } ) 根據條件分組 
      db.foo.mapReduce( mapFunction , reduceFunction , <optional params> ) 
      db.foo.remove(query) 根據條件刪除資料 
      db.foo.renameCollection( newName ) renames the collection  重命名錶 
      db.foo.save(obj) 儲存資料 
      db.foo.stats()  查看錶的狀態 
      db.foo.storageSize() - includes free space allocated to this collection 查詢分配到表空間大小 
      db.foo.totalIndexSize() - size in bytes of all the indexes 查詢所有索引的大小 
      db.foo.totalSize() - storage allocated for all data and indexes 查詢表的總大小 
      db.foo.update(query, object[, upsert_bool]) 根據條件更新資料 
      db.foo.validate() - SLOW 驗證表的詳細資訊 
      db.foo.getShardVersion() - only for use with sharding 
Mongodb的備份工具mongodump 

如果想備份資料庫test 如: 
CODE: 

[[email protected]  ~/mongodb/bin]$ ./mongodump --help 
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) 
-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':'yu[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()