一、概念
关系型数据库 (功能):mysql\sqllite\pgsql,用于数据的收集,表之间关系的,
一对一,一对多,多对多
nosql(性能):redis
向量数据库(检索搜索):es、faiss
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的
二、概念解析
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
三、常用命令
#查看已经存在的数据库
show dbs;
#创建数据库
use 数据库名
#删除数据库
db.dropDatabase()
#查看集合
show collections;
#创建集合
db.createCollection("news")
#删除集合
db.runoob.drop()
#添加数据
db.集合名.insert({'id':1,'title':'12'})
db.集合名.insert({'id':1,'title':'12','name':'sdfsd'})
#查询所有
db.集合名.find()
#删除数据
db.集合名.remove({"id":1})
#条件查询
db.集合名.find({"id":1})
四、Docker部署
docker search mongo
docker pull mongo
#运行容器
docker run -itd --name mongo -p 27017:27017 mongo --auth
#进入容器
docker exec -it mongo mongo admin mongo(运行的docker ps 中name)
#使用admin数据
#创建用户
db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
#配制权限
db.auth('admin', '123456')
在MongoDB中,db.createUser
和db.auth
是两个非常重要的命令,它们用于用户管理和权限控制。下面是这两个命令的作用和使用场景的详细解释:
-
创建用户 (
db.createUser
):- 这个命令用于在MongoDB数据库中创建一个新的用户。
- 参数解释:
user
: 用户名,用于登录数据库的身份标识。pwd
: 密码,与用户名配对,用于验证用户身份。roles
: 角色数组,定义了用户在数据库中的权限。角色可以是内置角色,也可以是自定义角色。
- 在你提供的命令中,创建了一个名为
admin
的用户,密码为123456
,并赋予了以下角色:{ role: 'userAdminAnyDatabase', db: 'admin' }
: 这个角色允许用户在admin
数据库中管理用户(创建、删除、更新用户信息)。"readWriteAnyDatabase"
: 这个角色允许用户读写任何数据库。
这个命令通常在MongoDB的
admin
数据库中执行,因为admin
数据库是MongoDB的管理和配置数据库,用于存储用户认证信息。 -
认证用户 (
db.auth
):- 这个命令用于验证用户的身份,如果认证成功,用户将获得之前创建的角色所赋予的权限。
- 参数解释:
- 第一个参数是用户名。
- 第二个参数是密码。
- 在你提供的命令中,使用用户名
admin
和密码123456
进行认证。 - 如果认证成功,你将能够以
admin
用户的身份执行后续的数据库操作,权限由之前创建用户时赋予的角色决定。
这两个步骤通常在MongoDB的初始化阶段执行,用于设置数据库的安全访问控制。首先创建用户并分配适当的角色,然后通过认证来确保只有拥有正确凭证的用户才能访问数据库。这是一种基本的安全措施,用于保护数据库免受未授权访问