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

第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/

056ce976a74fcf7b7add3912ef6989c1.png

第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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值