MongoDB 第10章 MongoDB shell之系统命令、用户命令
1、命令操作
MongoDB Shell不仅仅是一个交互式的shell,它页支持执行指定JavaScript文件,也支持执行指定的命令片段,有了这个特性,就可以将MongoDB与Linux shell完美结合,完成大部分的日常管理和维护工作。Shell命令其实控制台底层的查询语句都是用JavaScript脚本完成的。
系统相关
1.1、help查看命令
[root@localhost bin]# ./mongo
MongoDB shell version: 2.6.6
connecting to: test
> help
db.help() help on db methods #数据库支持方法帮助查看
db.mycoll.help() help on collection methods #集合支持方法帮助查看
sh.help() sharding helpers #分片帮助查看
rs.help() replica set helpers #复制集合帮助查看
help admin administrative help #管理员帮助
help connect connecting to a db help # 连接数据库帮助
help keys key shortcuts # 快捷键帮助
help misc misc things to know #
help mr mapreduce # mapreduce 帮助
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 # 显示当前系统时间大于1ms的最新条目
show logs show the accessible logger names #显示访问日志
show log [name] prints out the last segment of log in memory, 'global' is default #打印出最近日志片段,默认为global
use <db_name> set current database #选择某个数据库
db.foo.find() list objects in collection foo #查看foo集合中所有的对象
db.foo.find( { a : 1 } ) list objects in foo where a == 1 #查看foo集合中a字段value=1的所有对象
it result of the last line evaluated; use to further iterate #从当前迭代出结果中最后一个迭代更多的结果。
DBQuery.shellBatchSize = x set default number of items to display on shell #设置现在shell中的默认条目数
exit quit the mongo shell #退出
>
1.2、查看数据库
> show dbs;
admin 0.078GB
local 0.078GB
test 0.078GB
>
1.3、切换数据库
> use zhangsan
switched to db zhangsan
若数据库之前不存在,当创建一个集合的时候会自动创建当前数据库。
1.4、删除当前使用数据库
> db.users.insert({name:"zhangsan"});
WriteResult({ "nInserted" : 1 })
> db.users.find();
{ "_id" : ObjectId("54a8f0812238f6a8a4053d91"), "name" : "zhangsan" }
> show dbs
admin 0.078GB
local 0.078GB
test 0.078GB
zhangsan 0.078GB
> db.dropDatabase();
{ "dropped" : "zhangsan", "ok" : 1 }
> show dbs
admin 0.078GB
local 0.078GB
test 0.078GB
1.5、克隆数据库
> db.cloneDatabase("127.0.0.1");
{ "clonedColls" : [ ], "ok" : 1 }
> show dbs
admin 0.078GB
local 0.078GB
test 0.078GB
zhangsan (empty)
将指定机器上的数据库的数据克隆到当前数据库。
1.6、从指定的机器上复制指定数据库数据到某个数据库。
> db.copyDatabase("test","temp","127.0.0.1");
{ "ok" : 1 }
> db.show
zhangsan.show
> show dbs
admin 0.078GB
local 0.078GB
temp 0.078GB
test 0.078GB
zhangsan (empty)
> use temp
switched to db temp
> show collections
c1
c2
c3
c4
fs.chunks
fs.files
students
students_res
system.indexes
system.js
user
xuz
1.7、修复当前数据库
> db.repairDatabase();
{ "ok" : 1 }
查看当前使用的数据库
> db
temp
> db.getName();
temp
db和getName方法是一样的效果,都可以查询当前使用的数据库。
1.8、显示当前数据库状态
> db.stats();
{
"db" : "temp",
"collections" : 13,
"objects" : 131,
"avgObjSize" : 68.51908396946565,
"dataSize" : 8976,
"storageSize" : 106496,
"numExtents" : 13,
"indexes" : 13,
"indexSize" : 106288,
"fileSize" : 67108864,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"ok" : 1
}
1.9、当前数据库版本
> db.version();
2.6.6
1.10、查看当前数据库连接机器的地址
> db.getMongo();
connection to 127.0.0.1
集合相关
1.11、创建一个集合(Collection)
> db.createCollection("users",{size:20,capped:5,max:100});
{ "ok" : 1 }
> show collections
c1
c2
c3
c4
fs.chunks
fs.files
students
students_res
system.indexes
system.js
user
users
xuz
>
1.12、获取指定名称的集合(Collection)
> db.getCollection("users");
temp.users
>
1.13、得到当前db的所有集合(Collection)
> db.getCollectionNames();
[
"c1",
"c2",
"c3",
"c4",
"fs.chunks",
"fs.files",
"students",
"students_res",
"system.indexes",
"system.js",
"user",
"users",
"xuz"
]
>
1.14、显示当前db所有集合的索引状态
> db.printCollectionStats();
startup_log
{
"ns" : "local.startup_log",
"count" : 6,
"size" : 6144,
"avgObjSize" : 1024,
"storageSize" : 10485760,
"numExtents" : 1,
"nindexes" : 1,
"lastExtentSize" : 10485760,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 0,
"totalIndexSize" : 8176,
"indexSizes" : {
"_id_" : 8176
},
"capped" : true,
"max" : NumberLong("9223372036854775807"),
"ok" : 1
}
---
system.indexes
{
"ns" : "local.system.indexes",
"count" : 1,
"size" : 112,
"avgObjSize" : 112,
"storageSize" : 8192,
"numExtents" : 1,
"nindexes" : 0,
"lastExtentSize" : 8192,
"paddingFactor" : 1,
"systemFlags" : 0,
"userFlags" : 1,
"totalIndexSize" : 0,
"indexSizes" : {
},
"ok" : 1
}
---
>
用户相关
1.15、添加一个用户
说明:随着版本的更新,对在使用mongodb的业务也进行版本升级,之前创建用户的命令db.addUser()已经被废弃,且会提示警告,如下所示:
> db.addUser("test1","1111");
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
2015-01-04T16:15:37.911+0800 Error: couldn't add user: Cannot create users in the local database at src/mongo/shell/db.js:1004
官网上给出了最新创建用户的方法如下:
{ user: "<name>",
pwd: "<cleartext password>",
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
]
}
参数说明:
user:用户名称。
pwd:用户密码。
customData:当前用户信息,如描述或者其他任意信息。
roles:当前用户角色。
MongoDB 2.6版本提供了自带的role,也可以根据需要创建新的role,赋予一个用户,具体参考后面的role的创建。
> db.createUser({user:"test2",pwd:"1234",roles:[{role:"dbOwner",db:"temp"}]});
Successfully added user: {
"user" : "test2",
"roles" : [
{
"role" : "dbOwner", #角色名称 系统默认
"db" : "temp" #所属数据库
}
]
}
>
1.15、查看当前数据库所有用户
> show users
{
"_id" : "temp.test2",
"user" : "test2",
"db" : "temp",
"roles" : [
{
"role" : "dbOwner",
"db" : "temp"
}
]
}
>
1、16、获取具体某个用户
> db.getUser("test2");
{
"_id" : "temp.test2",
"user" : "test2",
"db" : "temp",
"roles" : [
{
"role" : "dbOwner",
"db" : "temp"
}
]
}
>
1.17、获取所有用户
> db.getUsers();
[
{
"_id" : "temp.test2",
"user" : "test2",
"db" : "temp",
"roles" : [
{
"role" : "dbOwner",
"db" : "temp"
}
]
}
]
>
1.18、修改用户密码
> db.changeUserPassword("test2","22222222");
1.19、删除单个用户
> db.dropUser("test2");
true
1.20、删除所有用户
> db.dropAllUsers();
0
>
返回删除用户的数量。
用户相关命令还有很多,在后面的文章列出,如updateUser()、grantRolesToUsers()、removeUser()等等。
- 点赞
- 收藏
- 关注作者
评论(0)