MongoDB基础知识点

MongoDB基础知识点

    • 1.MongoDB简介
      • 1.1基本信息
      • 1.2作用
      • 1.3下载
    • 2.MongoDB安装
      • 1.Ubuntu22.04
      • 2.Windows(非msi)
    • 3.MongoDB基本操作
      • 1.基本概念
      • 2.MongoDB文件增删改查(CURD)
        • 1.插入数据
        • 2.查询数据
        • 3.修改数据
        • 4.删除数据
        • 5.删除字段
    • 4.MongoDB实战管理系统数据库设计
      • 1.设计数据库
      • 2.Mongodb分页&排序
        • 2.1排序
        • 2.2分页
      • 3.MongoDB聚合查询
      • 4.MongoDB优化索引
        • 1.概括
        • 2.创建索引
        • 3.删除索引
        • 4.查看索引
        • 5.分析索引
      • 5.MongoDB权限机制
        • 1.设置权限
        • 2.开启验证模式
        • 3.登录(windows)
      • 6.MongoDB备份还原
        • 1.备份数据库
        • 2.还原数据库

1.MongoDB简介

1.1基本信息

  • 基于分布式文件存储数据
  • C++语言编写
  • 支持的数据结构非常松散,是类似json的bson格式(后期插入修改数据写JSON)

1.2作用

  • 存放项目数据
  • 实战工作开发写API接口

1.3下载

  • MongoDB官网

2.MongoDB安装

1.Ubuntu22.04

  • Ubuntu22.04安装MongoDB7.0

2.Windows(非msi)

# 解压ZIP安装包

# 创建服务(cmd管理员模式下进行   D:\mongodb\bin(根据自己实际情况来))
bin>mongod --install -dbpath D:\mongodb\data --logpath D:\mongodb\logs\mongodb.log
#######或############
bin>mongod --dbpath D:\mongodb\data --logpath D:\mongodb\logs\mongodb.log --logappend --serviceName MongoDB --auth --install 

# 启动服务
bin>net start mongodb

# 验证安装是否成功
bin>mongo

# 删除服务
bin>mongod.exe --remove
###########或####################
bin>sc delete mongodb

#关闭服务
net stop mongodb

3.MongoDB基本操作

1.基本概念

  • 查看数据库
show databases
# 或
show dbs
  • 创建数据库,不建议使用单独命令创建数据库,使用use隐式创建
  • 查看当前数据库
db
  • 选择数据库
use 数据库名称
  • 删除数据库,通过use选择需要删除的数据库,执行以下命令
db.dropDatabase()
  • 查看集合
show collections
  • 创建集合
    • capped: 布尔值,指定是否创建固定。这种集合有大小限制,一旦达到上限,新的文档会覆盖旧的文档,默认为’false’
    • size:指定固定集合的大小上限(字节数),只有在创建固定集合时才需要设置
    • max: 指定固定集合的文档数上限,只有在创建固定集合时才需要设置
    • autoIndexId: 布尔值,指定是否自动为’_id’字段创建索引,默认为true <该字段与Mongodb3.6弃用>
    • 其他字段建议参考官方文档
db.createCollection("集合名词",{
	capped: true,
	size: 5242880,
	max: 5000

})
  • 删除集合
db.集合名称.drop()
  • 统计集合
db.集合名称.count()

2.MongoDB文件增删改查(CURD)

1.插入数据

  • 集合存在,则直接插入数据,集合不存在,则隐式创建<过时>
db.集合名称.insert(json数据)
  • insertOne
    • 插入单个文档到集合
    db.集合名词.insertOne({<文档数据>})
    
  • insertMany
    • 插入多个文档到集合中
    db.集合名词.insertMany([{文档数据1},{文档数据2},{文档数据3},...])
    
  • 查看集合数据
    • mongodb会给插入的每条数据插入一个_id,_id的组成为时间戳(4)+机器码(3)+PID(2)+计数器(3)
    • 可以自定义_id,只需要在插入的数据中添加_id即覆盖(不推荐使用)
db.集合名称.find()
  • 插入多条数据(且数据量不大时)<过时>
db.集合名称.insert({},{},{})
  • 插入多条数据(且数据量较大时)
    • 可以使用js语法,mongodb底层采用的是JS引擎,支持部分JS语法
for(var i = 0;i <= 10; i++){
	db.infoT.insert({uname: 'a'+i,age: i+1})
	}

MongoDB基础知识点_第1张图片

2.查询数据

  • 查看集合数据
db.集合名称.find(条件 [,查询的列])
  • 复合查询
db.集合名称.find({键:{运算符: 值}}
运算符 作用
$gt 大于
$gte 大于等于
$lt 小于
$lte 小于等于
$ne 不等于
$in in
$nin not in
MongoDB基础知识点_第2张图片

3.修改数据

  • 修改数据
    • 是否新增:指条件匹配不到的数据插入(true是插入,false不插入,默认)
    • 是否修改多条: 指将匹配成功的数据都修改(true是,默认是false)
    • updateOne: 用于更新满足条件的第一个文档
    • updateMany: 用于更新满足条件的所有文档
db.集合名称.update(条件,{修改器:{键: 值}})
修改器 作用
$inc 递增
$rename 重命名列
$set 修改列值
$unset 删除列

MongoDB基础知识点_第3张图片

4.删除数据

  • deleteOne
    • 用于删除满足条件的第一个文档
    db.文档名称.deleteOne({条件})
    
  • deleteMany
    • 用于删除满足条件的所有文档
    db.文档名称.deleteMany({条件})
    
  • 删除所有文档
    db.文档名称.deleteMany({})
    

MongoDB基础知识点_第4张图片

5.删除字段

  • 聚合管道方式
    • fieldToDelete代表需要删除的字段
db.collection.aggregate([
	{ $project: {fieldToDelete: 0}},
	{$unset: ["fieldToDelete"]}
])

  • 删除单个文档方式
    • _id用来定位要更新的文档
    • fieldToDelete代表需要删除的字段
db.collection.updateOne({_id: docId},{$unset: {fieldToDelete: 1}})

MongoDB基础知识点_第5张图片

4.MongoDB实战管理系统数据库设计

1.设计数据库

  • 确定功能模块所属集合

  • 确定集合字段

    • UI设计稿每个展示内容对应一个字段
    • 创建字段
    • 更新字段
    • 状态字段
  • 练习

    • 需求:根据学生管理系统,设置存放学生信息的集合,并插入20条数据
    • 代码:
      • 先中文
        • 集合名词: 学生集合
        • 集合字段: 编号、学号、姓名、电话、性别、年龄、学历、备注
      • 再英文
use studentInfoList;

for(var num = 0;num <= 30;num++){
	db.student.insertOne({
		_id: num,
		no: "KD"+num,
		uname: '华中科技'+num,
		tel: "0218522"+num,
		sex: '女',
		age: num,
		edt: '研究生',
		remark: "勤奋好学"
	})
};
db;
show collections;
db.student.find();

2.Mongodb分页&排序

2.1排序

  • 升序排列集合中的数据
db.collection.find().sort({key: 1})
  • 降序排列集合中的数据
db.collection.find().sort({key: -1})
  • 指定排序字段并排除其他字段
db.collection.find({},{key: 1}).sort({key: 1})
  • 多字段进行排序
db.collection.find().sort({key1: 1,key2: -1})

MongoDB基础知识点_第6张图片

2.2分页

  • 查询第一页的数据,且每页包含2条数据
db.collection.find().sort({key: 1}).limit(2)
  • 查询第二页的数据,每页包含2条数据,skip()函数指定从结果集中跳过的记录数
db.collection.find().sort({key: 1}).skip(2).limit(2)

MongoDB基础知识点_第7张图片

3.MongoDB聚合查询

db.collection.aggregate([
	{管道: {表达式}}
])
  • 常用管道
管道器 说明
$group 将集合中的文档分组,用于统计结果
$match 过滤数据,只要输出符合条件的文档
$sort 聚合数据进一步排序
$skip 跳过指定文档数
$limit 限制集合数据返回文档数
  • 常用表达式
表达式 说明
$sum 总和 $sum: 1同count表示统计
$avg 平均
$min 最小值
$max 最大值

MongoDB基础知识点_第8张图片

4.MongoDB优化索引

1.概括

  • 说明
    • 索引是一种排序的便于快速查询的数据结构
  • 作用
    • 实现数据的高效查询

MongoDB基础知识点_第9张图片

  • 优缺点
    • 优点
      • 提高数据查询的效率,降低数据库的IO成本
      • 通过索引对数据进行排序,降低数据排序成本,降低CPU的消耗
    • 缺点
      • 占用磁盘空间
      • 大量索引影响SQL语句的效率,每次插入或修改数据都需要更新索引

2.创建索引

  • 创建单个索引语法
    • 1代表升序 -1代表降序
db.collection.createIndex({key: 1})
  • 创建多个字段复合索引
db.collection.createIndex({key1: 1,key2: -1})
  • 添加唯一索引
db.collection.createIndex({key: 1},{unique: 字段名})
  • 添加索引并指定索引名词
db.collection.createIndex({key: 1},{name: "指定名称"})

3.删除索引

  • 删除全部索引
db.collection.dropIndexes()
  • 删除指定索引
db.collection.dropIndex(索引名)

4.查看索引

  • 查看索引
db.collection.getIndexes()

MongoDB基础知识点_第10张图片

5.分析索引

  • 分析索引
    • COLLESAN 全表扫描
    • IXSCAN 索引扫描
    • FETCH 根据索引去检索指定文档
db.collection.find().explain('executionStats')
  • 未添加索引进行分析索引
db.collection.find({age: 88888}).explain('executionStats')

MongoDB基础知识点_第11张图片

  • 添加索引进行分析索引
db.stuInfo.createIndex({age: 1});
db.stuInfo.getIndexes();
db.stuInfo.find({age: 88888}).explain('executionStats')

MongoDB基础知识点_第12张图片

5.MongoDB权限机制

1.设置权限

use 数据库名称

db.createUser({
	"user: "账号",
	"pwd": "密码",
	"roles": [{
		role: "角色",
		db: "所属数据库"
	}]
})
角色种类 说明
root 超级用户角色
read、readwrite 数据库用户角色
dbAdmin、userAdmin 数据库管理角色
clusterAdmin、clusterManager、clusterMonitor、hostManager 集群管理角色
backup、restore 备份恢复角色

2.开启验证模式

  • 指用户需要输入账号密码才能登录使用
use admin
db.createUser({
	"user": "admin",
	"pwd": "1234567",
	"roles": [{
		role: "root",
		db: "admin"
	}]
})
  • 安装需要身份验证的MongoDB服务(windows)
/bin>mongod.exe --install --dbpath D:\MongoDB\data --logpath D:\MongoDB\log\mongodb2.log --auth

/bin>net start mongodb

3.登录(windows)

/bin> mongo 服务器IP地址:端口/数据 -u 用户名 -p 密码

或

mongo
use 数据库名
db.auth(用户名,密码)

6.MongoDB备份还原

1.备份数据库

  • 参数解析
    • port 数据库端口
    • d 数据库(数据库不写则导出全局)
    • o 备份数据放入指定目录
/bin>mongodump -h -port -u -p -d -o

2.还原数据库

  • 参数解析
    • d不写则还原全部数据
/bin>mongorestore -h -port -u -p -d --drop 备份数据目录

你可能感兴趣的:(数据库,mongodb,数据库)