数据库

1、数据库

1)为何使用数据库

  ① 动态网站中的数据都是存储在数据库中的

  ② 数据库可以用来持久存储客户端通过表单收集的用户信息

  ③ 数据库软件本身可以对数据进行高效管理

2)什么是数据库

  ① 数据库即存储数据的仓库,可以将数据进行有序的分类存储。它是一个软件,可以通过API去操作它。

  ② 常见数据库软件:mysql、mongoDB、oracle

3)MongoDB和MongoDB可视化软件下载

2、数据库相关概念

在一个数据库软件中可以包含多个数据仓库,在每个数据仓库中可以包含多个数据集合,每个数据集合中可以包含多条文档(具体的数据)

术语 解释说明
database 数据库,MongoDB数据库软件中可以建立多个数据库
collection 集合,一组数据的集合,可理解为js中的数组
document 文档,一条具体的数据,可理解为js中的对象
field 字段,文档中的属性名称,可理解为js中的对象属性

3、MongoDB第三方模块

使用Node.js操作MongoDB数据库需要依赖Node.js第三方包mongoose。

1)在powershell中下载mongoose第三方包

2)启动MongoDB

  ① 在命令行工具中运行 ' net start mongoDB ' 即可启动MongoDB,否则 MongoDB无法进行连接
  *问题:net start mongodb 发生系统错误 5,则以管理员身份运行powershell   再执行开启命令
  ② 数据库连接
    mongoose中的connect 方法连接
    then 和 catch 方法进行对结果的接收反馈
    运行后在按照提示 connect 方法中粘贴上 { useNewUrlParser: true,   useUnifiedTopology: true }
    再次执行js文件即可连接

3)创建数据库

在MongoDB中不需要显式创建数据库,如果正在使用的数据库不存在,MongoDB会自动创建。

图解:

下载mongoose

启动mongodb

编写代码

运行代码、发现错误提示

按提示添加对应代码

再次运行代码成功

4)创建集合

创建集合分为两步,一是对对集合设定规则,二是创建集合。

  ① 创建mongoose.Schema构造函数的实例即可创建集合。创建规则 Schema 实际上 就是创建 Schema 的实例对象
  ② model 方法第一个参数为集合名称,mongoose规定集合名称首字母要大写。 model 方法会返回当前集合的构造函数,代表当前集合
    *步骤:
      ① 使用 new 操作符创造 mongoose下的 Schema 实例对象
      ② 使用 mongoose 的 model 方法,再使用创建的集合规则
      ③ 插入数据,即创建问文档

5)创建文档

创建文档实际上就是向集合中插入数据。

  • 法一:分为两步:

    ① 创建集合实例。
    
    ② 调用实例对象下的save方法将数据保存到数据库中。
    
  • 法二:

    ① 使用集合构造函数的 create 方法
    
    ② 参数一是向集合插入文档的对象,参数二是回调函数(有 err 和 doc 两个参数)
    
    
    *关于数据库的操作都是异步操作
    *MongoDB中的API也支持promise方式
    *即,create方法也返回 promise 对象,也可使用 then 和 catch方法,支持异步函数写法
    

图解:

6)现存数据插入数据库

使用 mongoimport (import:导入)工具,命令:mongoimport -d 数据库名称(往哪个数据库中导入数据) -c 集合名称(导入到数据库的哪个集合中) -file 要导入的数据文件

  ① 复制mongoimport路径,再对mongoimport进行环境配置

  ② 重启powershell,输入 ' mongoimport -d 数据库名称(往哪个数据库中导入   数据) -c 集合名称(导入到数据库的哪个集合中) --file 要导入的数据文件 '   命令执行

  ③ 回到可视化工具查看可看到数据已被导入成功

图解:

7)查询文档

1.全部与单个查找

在集合的构造函数下有个 find 方法,默认情况下查找的是集合中的所有文档。

find方法返回的是一个promise对象,所以我们可以在它后面使用链式调用 then 方法来获取查询结果。而此时 then 方法返回的 result 是一个数组,数组中包含的多个对象就是 find 查找的结果,find 返回的是文档的集合(find方法返回的是一个数组)。

  • 使用:

    ① 编写代码,查询文档
    
    ② 可查询用户ID为多少的字段
    
    ③ findOne 方法返回的是一个对象,默认返回第一个对象
    

图解:

2.按范围查找

  • 语法:

① 匹配大于小于

  集合名称.find({ 属性: {$gt: 大于几 $lt: 小于几}}).then(result => console.log(result));

② 匹配包含

  集合名称.find({ 属性: {$in: ['包含的内容']}}).then(result => console.log(result));

③ 选择要查询字段

  集合名称.find().select(' 属性1 属性2 ').then(result => console.log(result));

*select中用 空格 隔开要查询字段,- 表示不查询

④ 根据字段排列

  升序:使用 sort 方法
  降序:在 sort 方法中使用 - 符号

⑤ 跳过与限制

  skip 跳过
  limit 限制

图解:

8)删除文档

  ① 删除单个文档 集合名称.findOneAndDelete({文档属性: '属性值'}).then(result => console.log(result));

  ② 删除多个文档 集合名称.deleteMany({}).then(result => console.log(result));

*deleteMany为空,代表删除集合的所有数据

图解:

9)更新文档

  ①更新单个文档 集合名称.updateOne({查询条件}, {要修改的值}).then(result => console.log(result));

  ②更新多个文档 集合名称.updateMany({查询条件}, {要修改的值}).then(result => console.log(result));

图解:

posted @ 2020-12-12 14:57  黛黛318  阅读(71)  评论(0编辑  收藏  举报