第1章 MongoDB的基本操作

1.1 查询帮助信息

> 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

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

show logs                    show the accessible logger names

show log [name]              prints out the last segment of log in memory, 'global' is default

use                set current database

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

DBQuery.shellBatchSize = x   set default number of items to display on shell

exit                         quit the mongo shell

# 或 KEYWORDS.help()

# 或 KEYWORDS.[TAB]

说明:

db:和数据库管理操作有关的

rs:和replication set 复制集有关的命令

sh:和shard分片有关的命令

1.2 常用操作

1.2.1 查看当前db版本

> db.version()

3.2.8

1.2.2 显示当前数据库

> db

test

# 或

> db.getName()

test

1.2.3 查询所有数据库

> show dbs

local  0.000GB

> show databases

local  0.000GB

1.2.4 切换到admin数据库

> use admin

switched to db admin

1.2.5 显示当前数据库状态

> db.stats()

{

"db" : "admin",

"collections" : 0,

"objects" : 0,

"avgObjSize" : 0,

"dataSize" : 0,

"storageSize" : 0,

"numExtents" : 0,

"indexes" : 0,

"indexSize" : 0,

"fileSize" : 0,

"ok" : 1

}

1.2.6 查看当前数据库的连接机器地址

> db.getMongo()

connection to 127.0.0.1

1.3 数据库操作

1.3.1 指定数据库进行连接(默认连接本机test数据库):

[mongod@db01 ~]$ mongo 127.0.0.1/admin

MongoDB shell version: 3.2.8

connecting to: 127.0.0.1/admin

> db

admin

1.3.2 创建数据库

提示:当use的时候,系统就会自动创建一个数据库;如果use之后没有创建任何集合,系统就会删除这个数据库。

1.3.3 删除数据库

提示:如果没有选择任何数据库,会删除默认的test数据库。

> use test

switched to db test

> db.dropDatabase()

{ "ok" : 1 }

1.4 集合操作

1.4.1 创建集合

1.4.1.1 直接创建集合:

> db.createCollection('a')

{ "ok" : 1 }

> db.createCollection('b')

{ "ok" : 1 }

1.4.1.2 当插入一个文档的时候,一个集合就会自动创建:

> db.c.insert({username:"mongodb"})

WriteResult({ "nInserted" : 1 })

1.4.2 查看当前数据下的所有集合

> show collections

a

b

c

# 或

> db.getCollectionNames()

[ "a", "b", "c" ]

# 或

> show tables

a

b

c

1.4.3 查看集合内容

> db.c.find()

{ "_id" : ObjectId("5a1e4905dbb63d0ef5fe1f0e"), "username" : "mongodb" }

> db.a.find().pretty()      # 以格式化的方式显示信息

{

"_id" : ObjectId("5a1e60e5dbb63d0ef5fe1f74"),

"uid" : 1,

"name" : "mongodb",

"age" : 6,

"date" : ISODate("2017-11-29T07:25:25.813Z")

}

{

"_id" : ObjectId("5a1e60e5dbb63d0ef5fe1f75"),

"uid" : 2,

"name" : "mongodb",

"age" : 6,

"date" : ISODate("2017-11-29T07:25:25.813Z")

}

1.4.4 重命名集合

> db.a.renameCollection("a1")

{ "ok" : 1 }

> show collections

a1

b

c

1.4.5 删除集合

> use app

switched to db app

> db.a1.drop()

true

> show collections

b

c

1.5 数据操作

1.5.1 插入数据

> for(i=0;i<100;i++){db.a.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()});}

WriteResult({ "nInserted" : 1 })

1.5.2 查询集合中的记录数

1.5.2.1 查询所有记录:

> db.a.find()

{ "_id" : ObjectId("5a1e4cd0dbb63d0ef5fe1f0f"), "uid" : 0, "name" : "mongodb", "age" : 6, "date" : ISODate("2017-11-29T05:59:44.245Z") }

...省略部分输出内容...

提示:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据。

设置每页显示数据的大小:

> DBQuery.shellBatchSize=50     # 设置每页显示50条记录

50

1.5.2.2 查询第一条记录:

> db.a.findOne()

{

"_id" : ObjectId("5a1e4cd0dbb63d0ef5fe1f0f"),

"uid" : 0,

"name" : "mongodb",

"age" : 6,

"date" : ISODate("2017-11-29T05:59:44.245Z")

}

1.5.2.3 查询指定记录

> db.a.find({uid:50})

{ "_id" : ObjectId("5a1e60e5dbb63d0ef5fe1fa5"), "uid" : 50, "name" : "mongodb", "age" : 6, "date" : ISODate("2017-11-29T07:25:25.843Z") }

1.5.2.4 查询总的记录数:

> db.a.count()

100

1.5.3 删除集合中的记录数

1.5.3.1 删除指定记录

> db.a.remove({uid:0})

WriteResult({ "nRemoved" : 1 })

> db.a.findOne()

{

"_id" : ObjectId("5a1e60e5dbb63d0ef5fe1f74"),

"uid" : 1,

"name" : "mongodb",

"age" : 6,

"date" : ISODate("2017-11-29T07:25:25.813Z")

}

1.5.3.2 删除全部记录

> db.a.remove({})

WriteResult({ "nRemoved" : 100 })

> db.a.count()

0

1.6 查看集合存储信息

1.6.1 查看集合存储信息

> db.a.stats()

{

"ns" : "app.a",

"count" : 0,

"size" : 0,

"storageSize" : 20480,

"capped" : false,

"wiredTiger" : {

...省略部分输出内容...

1.6.2 查看集合中数据的原始大小

> db.a.dataSize()

0

1.6.3 查看集合中索引数据的原始大小

> db.a.totalIndexSize()

20480

1.6.4 查看集合中索引+数据压缩存储之后的大小

> db.a.totalSize()

40960

1.6.5 查看集合中数据压缩存储的大小

> db.a.storageSize()

20480

第2章 使用客户端工具

NoSQL Manager for MongoDB是一款类似于SQL Server Management Studio的数据库管理软件。

下载地址:https://www.mongodbmanager.com/

第3章 用户管理

MongoDB数据库默认是没有用户名及密码的,即无权限访问限制,为了方便数据库的管理和安全,需要创建数据库用户。

3.1 创建用户

3.1.1 用户创建语法

{

user: "",

pwd: "",

customData: { },

roles: [

{ role: "",

db: "" } | "",

...

]

}

语法说明:

user字段:用户的名字

pwd字段:用户的密码

cusomData字段:为任意内容,例如可以为用户全名介绍

roles字段:指定用户的角色,可以用一个空数组给新用户设定空角色;roles 字段可以指定内置角色和用户定义的角色。

3.1.2 创建超级管理员(管理所有数据库)

> use admin

switched to db admin

> db.createUser(

{

user: "root",

pwd: "root",

roles: [ { role: "root", db: "admin" } ]

}

)

Successfully added user: {

"user" : "root",

"roles" : [

{

"role" : "root",

"db" : "admin"

}

]

}

3.1.3 验证用户

> db.auth("root","root")

1

3.1.4 登录用户

[mongod@db01 ~]$ mongo -uroot -proot admin

MongoDB shell version: 3.2.8

connecting to: admin

Server has startup warnings:

> show tables

system.users

system.version

提示:如果不加用户名和密码及数据库名虽然也可以登录进数据库,但是无法访问其中的数据。

[mongod@db01 ~]$ mongo admin    # 不加用户名和密码无法访问数据

MongoDB shell version: 3.2.8

connecting to: admin

> show tables

2017-11-29T16:16:03.347+0800 E QUERY    [thread1] Error: listCollections failed: {

"ok" : 0,

"errmsg" : "not authorized on admin to execute command { listCollections: 1.0, filter: {} }",

"code" : 13

} :

_getErrorWithCode@src/mongo/shell/utils.js:25:13

DB.prototype._getCollectionInfosCommand@src/mongo/shell/db.js:773:1

DB.prototype.getCollectionInfos@src/mongo/shell/db.js:785:19

DB.prototype.getCollectionNames@src/mongo/shell/db.js:796:16

shellHelper.show@src/mongo/shell/utils.js:754:9

shellHelper@src/mongo/shell/utils.js:651:15

@(shellhelp2):1:1

3.2 按生产需求创建应用用户

3.2.1 创建对某库的只读用户

[mongod@db01 ~]$ mongo -uroot -proot admin

> use test

switched to db test

> db.createUser(

{

user: "read",

pwd: "read",

roles: [ { role: "read", db: "test" } ]

}

)

Successfully added user: {

"user" : "read",

"roles" : [

{

"role" : "read",

"db" : "test"

}

]

}

> db.auth("read","read")

1

# 重新登录测试结果

[mongod@db01 ~]$ mongo -uread -pread test   # 以只读用户登录

> show tables                               # 进行查询操作(允许)

a

> db.a.insert({"uid":1,"name":"mongodb","age":6,"date":new Date()}) # 进行写入操作(报错)

WriteResult({

"writeError" : {

"code" : 13,

"errmsg" : "not authorized on test to execute command { insert: "a", documents: [ { _id: ObjectId('5a1e6ea7c550bef10cd42385'), uid: 1.0, name: "mongodb", age: 6.0, date: new Date(1511943847864) } ], ordered: true }"

}

})

3.2.2 创建某库的读写用户

[mongod@db01 ~]$ mongo -uroot -proot admin

> use test

switched to db test

> db.createUser(

{

user: "readwrite",

pwd: "readwrite",

roles: [ { role: "readWrite", db: "test" } ]

}

)

Successfully added user: {

"user" : "readwrite",

"roles" : [

{

"role" : "readWrite",

"db" : "test"

}

]

}

> db.auth("readwrite","readwrite")

1

# 重新登录测试结果

[mongod@db01 ~]$ mongo -ureadwrite -preadwrite test     # 以读写用户登录

> show tables                                           # 进行查询操作(允许)

a

> db.a.insert({"uid":1,"name":"mongodb","age":6,"date":new Date()}) # 进行写入操作(允许)

WriteResult({ "nInserted" : 1 })

3.2.3 分别对多库的不同权限的用户

[mongod@db01 ~]$ mongo -uroot -proot admin

> use test

switched to db test

> db.createUser(

{

user: "roles",

pwd: "roles",

roles: [{ role: "readWrite",db: "test"},

{ role: "read", db: "app" }

]

}

)

Successfully added user: {

"user" : "roles",

"roles" : [

{

"role" : "readWrite",

"db" : "test"

},

{

"role" : "read",

"db" : "app"

}

]

}

3.2.4 角色分类

3.2.4.1 数据库用户角色(Database User Roles)

read:授予User只读数据的权限

readWrite:授予User读写数据的权限

3.2.4.2 数据库管理角色(Database Administration Roles)

dbAdmin:在当前dB中执行管理操作

dbOwner:在当前DB中执行任意操作

userAdmin:在当前DB中管理User

3.2.4.3 备份和还原角色(Backup and Restoration Roles)

backup

restore

3.2.4.4 跨库角色(All-Database Roles)

readAnyDatabase:授予在所有数据库上读取数据的权限

readWriteAnyDatabase:授予在所有数据库上读写数据的权限

userAdminAnyDatabase:授予在所有数据库上管理User的权限

dbAdminAnyDatabase:授予管理所有数据库的权限

3.2.4.5 集群管理角色(Cluster Administration Roles)

clusterAdmin:授予管理集群的最高权限

clusterManager:授予管理和监控集群的权限,A user with this role can access the config and local databases, which are used in sharding and replication, respectively.

clusterMonitor:授予监控集群的权限,对监控工具具有readonly的权限

hostManager:管理Server

3.3 查看用户

3.3.1.1 查看所有用户

> use admin

switched to db admin

> db.system.users.find();

{ "_id" : "admin.root", "user" : "root", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "6i+6c//UG92hsGAKE+Va8Q==", "storedKey" : "Qbq83Dx36ZVKiEYY/rTKU3r9e/M=", "serverKey" : "Wd3krHtSvNDqf52yl5ThiJnPbis=" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }

{ "_id" : "test.read", "user" : "read", "db" : "test", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "7Krbf82gklo9PPJP9PivIg==", "storedKey" : "LEJWdJfREYuaKij9JdLSAeNoaXY=", "serverKey" : "tqYpPiMlz6f0q7Nwcu7z2K6O/Mo=" } }, "roles" : [ { "role" : "read", "db" : "test" } ] }

{ "_id" : "test.readwrite", "user" : "readwrite", "db" : "test", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "wj/mcQpF3szWftC5czfBnw==", "storedKey" : "gGJrtVSKWi6erHMUKpAghKjH7D0=", "serverKey" : "y8iWeEHmVGMwU+5VU0JEF9AIp/M=" } }, "roles" : [ { "role" : "readWrite", "db" : "test" } ] }

3.3.1.2 查看某个库中的用户

> use test

switched to db test

> show users

{

"_id" : "test.read",

"user" : "read",

"db" : "test",

"roles" : [

{

"role" : "read",

"db" : "test"

}

]

}

{

"_id" : "test.readwrite",

"user" : "readwrite",

"db" : "test",

"roles" : [

{

"role" : "readWrite",

"db" : "test"

}

]

}

3.4 删除用户

[mongod@db01 ~]$ mongo -uroot -proot admin

> show users

{

"_id" : "test.test",

"user" : "test",

"db" : "test",

"roles" : [

{

"role" : "read",

"db" : "test"

}

]

}

{

"_id" : "test.read",

"user" : "read",

"db" : "test",

"roles" : [

{

"role" : "read",

"db" : "test"

}

]

}

{

"_id" : "test.readwrite",

"user" : "readwrite",

"db" : "test",

"roles" : [

{

"role" : "readWrite",

"db" : "test"

}

]

}

> db.dropUser("test")

true

mongodb数据库显示obj_MongoDB基础(三)—基本操作及管理 | leon的博客相关推荐

  1. mongodb数据库显示obj_MongoDB创建和查看数据库

    MongoDB 将 BSON 文档(即数据记录)存储在集合中,数据库包含文档集合.在 MongoDB 里面存在数据库的概念,但没有模式,保存数据的结构是 BSON 结构,只不过在进行一些数据处理的时候 ...

  2. mongodb数据库显示obj_MongoDB数据库基本操作

    基本操作 下面列举几个常用的: 1.Help查看命令提示 db.help(); 副本集信息命令提示:rs.help 2.切换/创建数据库 use test       --当创建一个集合的时候会自动创 ...

  3. mongodb数据库显示obj_Mongodb使用

    1.下载安装 1.1.首先去官网下载mongodb对应版本安装 https://www.mongodb.com/download-center 解压到目录 例如:c:/mongo 创建文件夹用于mon ...

  4. go基础第一遍学习(李文周博客)

    go基础第一遍学习记录,以下内容来自李文周博客 文章目录 my重点记录 1.println和prinf的区别 一.通常情况: 二.整数: 三.浮点数: 四.字符串: 五.布尔类型: 2.[golang ...

  5. SpringBoot整合MongoDB数据库并实现基础CRUD

    MongoDB安装教程:MongoDB数据库安装以及将MongoDB设置为系统服务 MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,由C++语言编写.旨为WEB应用提供可扩展的高性 ...

  6. 二、mongodb数据库系列——聚合操作 索引操作 权限管理

    一.mongodb的聚合操作 学习目标 了解 mongodb的聚合原理 掌握 mongdb的管道命令 掌握 mongdb的表达式 1 mongodb的聚合是什么 聚合(aggregate)是基于数据处 ...

  7. cosmic数据库使用说明_使用Cosmic JS为React + Next.js博客提供动力

    cosmic数据库使用说明 TLDR: Cosmic JS为博客提供了出色的后端. 它是功能齐全的内容管理系统(CMS),具有直观的用户界面,非技术客户可以使用该界面来管理其站点内容. 请点击以下链接 ...

  8. 【Javascript基础语法】第五周预习博客

    Javascript基础语法 前言 一.初识JavaScript 1.JS是什么 2.作用 3.浏览器执行js简介 4.Js组成 二.JS的引入方式 1.行内式 2.内部引入 3.外部引入 三.js语 ...

  9. python3基础教程雪峰_[雪峰磁针石博客]python3快速入门教程2数据结构1变量与赋值...

    Published: 日 02 九月 2018 语法基础 解释器像简单的计算器:可以输入表达式,它会返回值.表达式语法很简单:运算符 + , - , * 和 / 与其它语言一样(例如Pascal或C) ...

最新文章

  1. 安全预测 影响企业风险管理的三大趋势
  2. 解析三层架构(1)---为什么要分层?
  3. idea 快速定位到某一行的快捷键
  4. 没有form的表单验证_PHP动态生成表单,内置17种常用组件并且支持表单验证!
  5. 数据挖掘导论读书笔记9聚类分析
  6. 2.2.2 操作系统之进程调度的时机(主动放弃与被动放弃)、切换与过程(广义与狭义)、方式(非剥夺与剥夺)
  7. python逻辑运算(not、and、or)总结_python逻辑判断 () not and or
  8. IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)
  9. linux网络IO模型
  10. Exchange 2016 CU9 已发布
  11. C#中生成随机数的方法和语句
  12. 传奇私服架设微端搭建教程
  13. 交叉熵损失函数权重计算
  14. 集合 -- 如何安全删除 HashMap 中的元素
  15. vue项目实现国际化方案
  16. 利用snapper实现archlinux的系统还原
  17. 解决WPS公式上浮问题
  18. 用Websocket聊天完整demo,做笔记用,各位大佬多多指教
  19. 私有文件服务器,私有云文件服务器
  20. Unity3D离线版数字地球实现

热门文章

  1. 为什么携程要做好持续交付?
  2. 线程启动start和run
  3. 51nod 1287: 加农炮 好题啊好题
  4. Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)下
  5. Repeater嵌套HyperLink,前台代码中绑定参数
  6. golang 函数结束后 goroutine退出机制
  7. python 报错 AttributeError: module ‘time‘ has no attribute ‘clock 解决方法
  8. linux dmesg 格式化时间
  9. ATTCK框架简介 已知攻击技术汇总
  10. linux stress 命令 模拟系统高负载