MongoDb 命令查詢所有資料庫列表
阿新 • • 發佈:2018-12-24
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程式碼
CODE:
> db.help();
Java程式碼
如果想知道當前資料庫下的表或者表collection支援哪些方法,可以使用一下命令如:
CODE:
> db.user.help(); user為表名
Java程式碼
根據條件查詢資料
-----------------------
通過條件查詢: 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()
> 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 } )
-----------------------------
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()