關於mongodb的一些命令
阿新 • • 發佈:2018-11-11
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()