MongoDb 命令查詢所有數據庫列表
> show dbs
如果想查看當前連接在哪個數據庫下面,可以直接輸入
> db
test
想切換到admin數據庫下面
> use
admin
switched to db
admin
查看
> db
admin
想查看
admin 下有哪些表或者叫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_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支持哪些方法,可以使用一下命令如:
> 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.
根據條件查找數據
-----------------------
通過條件查詢: 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 --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庫中的表
> show collections
system.indexes
User
刪除user表
> db.user.drop();
True
> show collections
System.indexes
現在利用mongorestore表恢復剛纔利用mongodump備份的數據
[[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()