MongoDB数据库
https://www.liuqingzheng.top/db/Mongodb系列/Mongodb快速入门/
1 MongoDB介绍
# MongoDB数据库简单介绍
是一个面对文档(document-oriented)的数据库,不是关系型数据库
是以JSON格式在硬盘上存储数据
# 与关系型数据库的对应关系
MySQL MongoDB ES
库 库 索引
表 表/集合 类型(映射)
一行数据 文档(json) 文档
# MongoDB支持表连接,也有索引,默认自动将字段("_id")就是主键索引
# 一个集合---> 一个表---> 一组文档(多条json)
2 MongoDB和管理工具安装
### 1 MongoDB服务 安装
# 1.下载地址
https://www.mongodb.com/download-center/community 选择平台下载
一路下一步 全部/自定义安装,勾选安装为服务
# 不要勾选mongodb-compass(官方客户端工具 下载很慢 很少用)
# 2.bin路径下的配置文件 mongod.cfg
# 数据存储
storage:
dbPath: C:\Program Files\MongoDB\Server\4.2\data
journal:
enabled: true
# 日志存储
systemLog:
destination: file
logAppend: true
path: C:\Program Files\MongoDB\Server\4.2\log\mongod.log
# 网络端口
net:
port: 27017
bindIp: 127.0.0.1
# 3.windows以服务启动方式,本质就是一条命令启动
mongod.exe --config "mongod.cfg" --service
# 4.Linux上 启动/关闭mongodb
# 以服务方式 启动
net start MongoDB
net stop MongoDB
# 以命令方式 启动 以配置文件
mongod --config "mongod.cfg"
# 开启登录/连接 认证 mongodb服务 默认不需要认证
mongod --config "mongod.cfg" --auth
# 5.mongodb 登录
mongo # 后面等同于 mysql和redis-cli
# 远程连接:./mongo --host 10.0.0.5 --port 27017
### 2 客户端工具:robo3t 安装 (等同于Navicat)
一路下一步
3 账号管理
# 账号管理:就是 某个库的用户管理
# 注意: 每个库,都有各自的用户管理 user
1.要管理哪个库,就在哪个库下建账号
2.全局管理员账号,要建在amdin库下
### 1 管理工具robot3t中创建:点点点
### 2 命令创建
# 1.创建账号
use admin # 切换到某个数据库中
# 全局变量db,代表当前数据库
db.createUser(
{
user: "root", # 用户名
pwd: "123", # 密码
roles: [ { role: "root", db: "admin" } ] # 角色权限:针对哪个库,有什么权限 可管理多个库
}
)
# 2.用户登录连接: 注意使用双引号而非单引号
# 以管理员登陆
./mongo --host 10.0.0.5 --port 27017 -u "root" -p "123" --authenticationDatabase "admin"
# 以用户lqz登陆 (只对test库有权限)
./mongo --host 10.0.0.5 --port 27017 -u "lqz" -p "123" --authenticationDatabase "test"
# 也可以在登录之后用db.auth("账号","密码")登录
mongo
show dbs;
use admin;
# db是一个全局变量,代表当前所有库
db.auth("root","123")
show tables;
4 基本数据类型
# 1.null:用于表示空或不存在的字段
d={'x':null}
# 2.布尔型:true和false
d={'x':true,'y':false}
# 3.数值
d={'x':3,'y':3.1415926}
# 4.字符串
d={'x':'egon'}
# 5.日期
d={'x':new Date()}
d.x.getHours()
# 6.正则表达式
d={'pattern':/^egon.*?nb$/i}
# 正则写在//内,后面的i代表:
i 忽略大小写
m 多行匹配模式
x 忽略非转义的空白字符
s 单行匹配模式
# 7.数组
d={'x':[1,'a','v']}
# 8.内嵌文档
user={'addr':{'country':'China','city':'YT'}}
user.addr.country
# 9.对象id: 是一个12字节的ID,是文档的唯一标识,不可变 主键索引!!!
d={'x': ObjectId()}
# ObjectId对象:可以保证相同进程的同一秒产生的ObjectId也是不一样的 ===》 可用于分布式id的生成