学习MongoDB

学习MongoDB

MongoDB介绍

学习MongoDB的网站:https://www.runoob.com/mongodb/mongodb-tutorial.html


MongoDB是一个基于分布式文件存储的开源数据库系统。


在高负载的情况下,添加更多的节点,可以保证服务器性能。


MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案。


MoongoDB将数据存储为一个文档,数据结构由键值(key=value)对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。

学习MongoDB_第1张图片
image

创建数据目录

MongoDB将数据目录存储在db目录下,但是这个数据目录不会主动创建,我们在安装完成后需要创建它,请注意,数据目录应该放在根目录下。


具体命令行操作详见文件:C:\Users\94953\Desktop\Mongo基本命令行.txt

MongoDB概念解析

mongodb中基本的概念是文档、集合、数据库。


学习MongoDB_第2张图片
image

有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库


admin:root数据库,如果将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限,一些特定的服务器端命令也只能从这数据库运行。例如:列出所有的数据库或者关闭服务器。(慎用)


local:这个数据永远不会被复制,可以用来存储于本地单台服务器的任意集合(慎用)


config:当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

文档Document

文档是一组(key-value)键值对.


一个简单的文档例子如下:

{"site":"www.runoob.com", "name":"菜鸟教程"}

文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型

集合collection

集合是MongoDB文档组


集合存在于数据库中,集合没有固定的结构,这意味着对集合可以插入不同格式和类型的数据


例如:将不同数据结构的文档插入到集合中

{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"菜鸟教程","num":5}

MongoDB的数据类型

详情请见:https://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

ObjectId

ObjectId是唯一主键,可以很快的去生成和排序,包含12bytes


学习MongoDB_第3张图片
image

MongoDB中存储的文档必须有一个_id键。这个键的值是可以是任意类型,默认是个ObjectID对象。


由于ObjectID中保存了创建的时间戳,我们可以通过getTimestamp函数来获取文档的创建时间:

var newObject=ObjectId()
newObject.getTimestamp()

用命令行打开的MongoDB会话是JavaScript会话,采用JavaScript语言。

MongoDB连接

先启动MongoDB服务器
net start MongoDB
再命令行
mongo

MongoDB创建数据库

在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。

MongoDB用户权限问题

MongoDB默认是可以通过权限操作的,当我们在配置文件中使auth=ture,这时我们在进入数据库的时候就需要权限操作了。



MongoDB创建用户的操作为:

db.createUser(
{
  user:'niufaandaidan',
  pwd:'20190706',
  roles:[{role:'userAdminAnyDatabase',db:admin}]
})

创建好超级用户后,此时还不能执行show dbs命令,我们需要进行权限验证db.auth('niufaandaidan','20190706'),此时我们输入show dbs参会显示输出。

admin
config
local

这三个数据库是MongoDB默认的数据库。

创建自己数据库

在MongoDB中创建数据库,只有我们在数据库中插入数据后,数据库才会真正的创建.


MongoDB的用户权限和数据库是绑定的。也就是创建一个新的数据库,并在数据库中插入数据的正确操作应该是创建与之对应的用户:

#正确操作流程
use admin
db.auth('niufaandaidan','20190706')
db.createUser(
{
  user:'niufa',
  pwd:'20190706',
  roles:[{
    role:'readWrite',
    db:'recommended'}]
})
db.auth('niufa','20190706')
use recommended
db.repo.insert({'name':'kevin'})

请注意以下几点:

  1. 数据库和用户是绑定的,光创建一个超级用户并不能操作在其他新建的数据库中插入数据
  2. 在切换数据库时,先切换认证用户,不然会出现too many users are authenticated的错误

此错误是因为没有授权给admin用户对system.version表执行命令的权限,解决方法如下:

db.grantRolesToUser("root", [{role: "__system", db: "admin"}])

给超级用户赋予上面的操作,这样root用户就能执行高级功能,例如删除数据库。

MongoDB基本角色

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root

MongoDB基本命令行操作

详情请见:https://www.cnblogs.com/zhuawang/p/3965272.html

你可能感兴趣的:(学习MongoDB)