第三部分 管理篇 第九章 MongoDB shell之系统命令、用户命令

1、命令操作

MongoDB Shell不仅仅是一个交互式的shell,它页支持执行指定JavaScript文件,也支持执行指定的命令片段,有了这个特性,就可以将MongoDB与Linux shell完美结合,完成大部分的日常管理和维护工作。Shell命令其实控制台底层的查询语句都是用JavaScript脚本完成的。

系统相关

1.1、help查看命令

[[email protected] 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()等等。

--------------------------------MongoDB系列文章更新------------------------------------------------

第一部分 基础篇 第一章 走进MongoDB

第一部分 基础篇 第二章 安装MongoDB

第一部分 基础篇 第三章 MongoDB体系结构

第一部分 基础篇 第四章 MongoDB快速入门

第一部分 基础篇 第四章 MongoDB查询

第二部分 应用篇 第五章 MongoDB高级查询

第二部分 应用篇 第六章 MongoDB GridFS

第二部分 应用篇 第七章 MongoDB MapReduce

第三部分 管理篇 第八章 MongoDB服务管理

时间: 2024-08-27 02:11:54

第三部分 管理篇 第九章 MongoDB shell之系统命令、用户命令的相关文章

第三部分 管理篇 第九章 MongoDB shell之eval、进程

1.通过eval参数执行指定语句 比如,需要查询test库的t1表中的记录数有多少,常用方法如下: [[email protected] bin]# ./mongo test MongoDB shell version: 2.6.6 connecting to: test > db.t1.count(); 0 > 通过命令行eval参数直接执行语句: [[email protected] bin]# ./mongo test --eval "printjson(db.t1.count

第九章、shell脚本编程基础

第九章.shell脚本编程基础 本章内容 编程基础 脚本基本格式 变量 运算 条件测试 配置用户环境 编程基础 程序:指令+数据 程序编程风格: 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 程序的执行方式 计算机:运行二进制指令 编程语言: 低级:汇编 高级: 编译:高级语言-->编译器-->目标代码 java,C# 解释:高级语言-->解释器-->机器代码 shell, perl, python (系统后台

第三部分 管理篇 第八章 MongoDB服务管理

1.数据导出 mongoexport 在日常的数据库管理中经常会遇到导入导出数据的需求,下面就介绍实用工具mongoexport和mongoimport的使用方法,假设库里有一张user表,里面有2条记录,我们将到导出. > db.user.insert({username:"Jerry",age:100}); WriteResult({ "nInserted" : 1 }) > db.user.insert({username:"Tom&qu

第五部分 架构篇 第十四章 MongoDB Replica Sets 架构(自动故障转移/读写分离实践)

说明:该篇内容部分来自红丸编写的MongoDB实战文章. 1.简介 MongoDB支持在多个机器中通过异步复制达到故障转移和实现冗余,多机器中同一时刻只有一台是用于写操作,正是由于这个情况,为了MongoDB提供了数据一致性的保障,担当primary角色的服务能把读操作分发给Slave(详情请看前两篇关于Replica Set成员组成和理解). MongoDB高可用分为两种: Master-Slave主从复制:只需要在某一个服务启动时加上-master参数,而另外一个服务加上-slave与-so

第四部分 性能篇 第十一章 MongoDB 性能监控

声明:该文章主要来自<MongoDB实战>一书内容,主要想通过该书学习MongoDB的相应知识,加深理解,故写在自己的博文当中,作为记录在最后的章节中,会有一个自己集合MongoDB数据库应用的JavaEE的web应用. 1.MongoStat 此工具可以快速的查看某组运行中的MongoDB实例的统计信息,用法如下: [[email protected] bin]# ./mongostat connected to: 127.0.0.1 insert query update delete g

第五部分 架构篇 第十二章 MongoDB Replica Sets 架构(简介)

1.Replication简介 MongoDB Replication即是在多个服务器中同步复制数据,数据复制的目的为提供冗余和提高数据的可用性,数据复制的操作即在不同的数据库服务器上保存多份复制的数据集,以此来避免单机故障进而丢失数据,复制机制也允许你恢复硬件故障和服务中断,进而起到数据的容灾和备份作用. 在MongoDB中,一个复制集就是一组mongod实例,一个mongod实例作为primary也就是所谓的master服务,接收所有的写操作,其他的mongod实例作为secondaries

Java 线程第三版 第九章 Thread调度 读书笔记

一.Thread调度的概述 import java.util.*; import java.text.*; public class Task implements Runnable { long n; String id; private long fib(long n) { if (n == 0) return 0L; if (n == 1) return 1L; return fib(n - 1) + fib(n - 2); } public Task(long n, String id)

MongooooooooooooooooooooDB入门三:MongoDB shell

MongoDB shell是什么? MongDB shell是一个功能完备的Javascript解释器,可以运行Javascript程序. 但shell的作用远不止于此,它主要还是用于连接MongoDB服务器,执行脚本,对数据库进行操作.类似于SQL Server的管理工具SSMS. 可以通过以下2条命令打开shell控制台: > cd C:\Program Files\MongoDB 2.6 Standard\bin > mongo 如图所示: C:\Program Files\MongoD

第一部分 基础篇 第三章 MongoDB体系结构

声明:该文章主要来自<MongoDB实战>一书内容,主要想通过该书学习MongoDB的相应知识,加深理解,故写在自己的博文当中,作为记录,在最后的章节中,会有一个自己集合MongoDB数据库应用的JavaEE的web应用. MongoDB是一个可移植的数据库,它在流行的每一个平台上都可以使用,即所谓的跨平台性,在不同的操作系统上虽然略有差别,但是从整体架构上来看,MongoDB在不同的平台上是一样的,如数据逻辑结构和数据存储等等. 一个运行着的MongoDB数据库就可以看成是一个MongoDB