天天看點

MongoDB的使用技巧(轉)

如果想檢視目前連接配接在哪個資料庫

下面,可以直接輸入db

> db

Admin

想切換到test資料庫下面

> use test

switched to db test

Test

想檢視test下有哪些表或者叫collection,可以輸入

> show collections

system.indexes

user

想知道mongodb支援哪些指令,可以直接輸入help

> help

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

如果想知道目前資料庫支援哪些方法:

> db.help();

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(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支援哪些方法,可以使用一下指令如:

> db.user.help();  user為表名

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. 根據條件查找資料

                                            e.g. 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 如:

[[email protected]  ~/mongodb/bin]./mongodump−−helpoptions:−−helpproducehelpmessage−h[−−host]argmongohosttoconnectto−d[−−db]argdatabasetouse−c[−−collection]argcollectiontouse(somecommands)−u[−−username]argusername−p[−−password]argpassword−−dbpathargdirectlyaccessmongoddatafilesinthispath,insteadofconnectingtoamongodinstance−v[−−verbose]bemoreverbose(includemultipletimesformoreverbositye.g.−vvvvv)−o[−−out]arg(=dump)outputdirectory[[email protected] /mongodb/bin]./mongodump−−helpoptions:−−helpproducehelpmessage−h[−−host]argmongohosttoconnectto−d[−−db]argdatabasetouse−c[−−collection]argcollectiontouse(somecommands)−u[−−username]argusername−p[−−password]argpassword−−dbpathargdirectlyaccessmongoddatafilesinthispath,insteadofconnectingtoamongodinstance−v[−−verbose]bemoreverbose(includemultipletimesformoreverbositye.g.−vvvvv)−o[−−out]arg(=dump)outputdirectory[[email protected] /mongodb/bin][color=Blue]./mongodump -d test -o test/[/color]

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庫中的表

User

删除user表

> db.user.drop();

True

System.indexes

現在利用mongorestore表恢複剛才利用mongodump備份的資料

[[email protected]  ~/mongodb/bin]./mongorestore−−helpusage:./mongorestore[options][directoryorfilenametorestorefrom]options:−−helpproducehelpmessage−h[−−host]argmongohosttoconnectto−d[−−db]argdatabasetouse−c[−−collection]argcollectiontouse(somecommands)−u[−−username]argusername−p[−−password]argpassword−−dbpathargdirectlyaccessmongoddatafilesinthispath,insteadofconnectingtoamongodinstance−v[−−verbose]bemoreverbose(includemultipletimesformoreverbositye.g.−vvvvv)[[email protected] /mongodb/bin]./mongorestore−−helpusage:./mongorestore[options][directoryorfilenametorestorefrom]options:−−helpproducehelpmessage−h[−−host]argmongohosttoconnectto−d[−−db]argdatabasetouse−c[−−collection]argcollectiontouse(somecommands)−u[−−username]argusername−p[−−password]argpassword−−dbpathargdirectlyaccessmongoddatafilesinthispath,insteadofconnectingtoamongodinstance−v[−−verbose]bemoreverbose(includemultipletimesformoreverbositye.g.−vvvvv)[[email protected] /mongodb/bin]./mongorestore -d test -c user test/test/user.bson 

test/test/user.bson

          going into namespace [test.user]

          100000 objects

User表中的10w條記錄已經恢複

> 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

mongodb還提供了HTTP檢視運作狀态及restfull的接口

預設的通路端口是28017

本文轉自 不得閑 部落格園部落格,原文連結:http://www.cnblogs.com/DxSoft/archive/2010/10/21/1857360.html   ,如需轉載請自行聯系原作者