热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   新闻动态 -   正文

前端需要掌握的MongoDB数据库

知了堂姐
2024-07-08 17:22:16
0

数据库概念

数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。

所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合

数据库介绍

  • 存储数据的仓库,独立于语言之外的软件,可以通过api去操作它
  • 生活中
  • 通过仓库来存放物品,每个仓库有N个架子, 每个架子有N个物品


  • 在程序中
  • 通过数据库来存放数据, 每个数据库有N个表/集合,每个表/集合有N个数据/文档

数据库种类

  • 关系型数据库
  1. 遵循统一的SQL标准,语法大同小异
  2. 有库和表的约束等

Oracle、 MySql、 SQLite、 SQL Server等

  • 非关系型数据库(Not Only SQL)
  1. 没有统一的标准
  2. 一般以键值对形式存储
  3. 读取速度更快

Mongodb(文档)、Redis/Memcache(内存)

为什么使用数据库

  1. 动态网站的数据都存储于数据库中
  2. 可以持久存储客户端通过表单收集的用户信息
  3. 可以对数据进行高效的管理

MongoDB中的相关术语

  • database: 数据库,mongodb中可以建立多个数据库
  • collection:集合,一组数据的集合,可以理解为js中的数组
  • document:文档,一条具体的数据, 可以理解为js中的对象
  • field:字段,可以理解为js中的对象属性
  • field —> document —> collection —> database

目标

  1. 存放项目数据
  2. 实战工作中可以独立写api接口


MongoDB安装步骤

  • linux环境
  1. 下载mongodb(linux)安装包(通过winScp工具将安装包从window移动到linux)
  2. 远程工具连接linux(putty等)
  3. 移动到安装包的目录解压安装包
  4. tar -zxvf mongodb-linux-x86_64-xxxxx.tgz
  5. 将解压包移动到指定目录
  6. mv mongodb-linux-x86_64-xxxx/ /user/local/mongodb
  7. 创建数据存放目录与日志存放目录
  8. mkdir -p /user/local/mongodb/data /user/local/mongodb/logs
  9. 启动MongoDB服务
  10. /user/local/mongodb/bin/mongod --dbpath=/user/local/mongodb/data --logpath=/user/local/mongodb/logs/mongodb.log --logappend --port=27017 --fork
  11. 后期登录即可
  12. /user/local/mongodb/bin/mongo


  • window环境
  1. 下载mongodb(window)安装包并解压
  2. 创建服务(dos命令窗口中移动至安装包的安装路径)
  3. bin/mongod.exe --install --dbpath 磁盘路径 --logpath 日志路径
  4. 启动服务(在mongodb的bin目录 **=》 以管理员身份运行)
  5. net start mongodbnet stop mongodb
  6. 登录(在mongodb的bin目录 》 也可以直接配置环境变量)
  7. mongo


MongoDB基本操作

查看数据库

show databases

选择数据库

use 数据库名
注意:在mongodb中选择不存在的数据库时不会报错(隐式创建),当这个数据库中有内容后会展示

查看当前选择的数据库

db

删除数据库

db.dropDatabase()
删除当前选择的数据库

查看集合

show collections

创建集合

db.createCollection('集合名')
注意: 后期插入数据都是隐式创建集合

删除集合

db.xxx.drop()

mongodb文档增删改查

数据库主要用来存放项目数据, 数据库和集合的创建完成之后需要对文档(数据)进行增删改查

插入文档

  • 语法
  • db.集合名.insert(json数据)
  • 集合若存在,则直接插入数据,若集合不存在,则隐式创建
  • 练习:在test2数据库的c1集合中插入数据(名字叫yuweiqi 年龄18岁)
  • use test2db.c1.insert({
  • name: "yuweiqi",
  • age: 18})
  • // mongodb会给每一条文档加一个全球唯一的_id键
- 可以给每条数据自定义_id **但是强烈不推荐**
  
  - 只要在插入数据的时候加上自定义的_id既可覆盖
  
  - 插入多条数据
  
  ```javascript
    db.c1.insert([   
      {name: "zhangsan", age: 18}, 
        {name: "zhaosi", age: 19},
        {name: "wangwu", age: 20}]
                )// 一次性插入三条数据
  • 如何快速插入多条数据
  • 因为mongodb底层使用的是js引擎实现的,所以支持部分js语法
  • 因此可以写for循环
  • for(var i = 0; i < 10; i++) {
  • db.c1.insert({name: "a"+ i, age: i})
  • }

删除文档

  • 语法
  • db.集合名.remove(条件, [,是否删除一条])是否删除一条:true 删除全部匹配的 false 删除一条(默认)

修改文档

  • 基础语法
  • db.集合名.update(条件,新数据[,是否新增, 是否修改多条])是否新增: 根据条件匹配不到数据时是否插入该条数据
  • true为插入
  • false为不插入(默认)是否修改多条:
  • 将匹配成功的数据都修改
  • true 是
  • false 否(默认)
  • 升级语法
  • db.集合名.update(条件,{修改器:{键:值}})
  • | 修改器 | 作用 | | ———- | ———— | | $inc | 递增 | | $rename | 重命名列 | | $set | 修改列值 | | $unset | 删除列 |
  • 准备工作
  • for(var i = 1; i <= 10; i++) {
  • db.c2.insert({uname: "zs"+i, age: i})
  • }
  • 在test2数据库的c2集合中插入10条数据
  • 练习1:将{uname: zs1}改为{uname: zs2}
  • db.c2.update({uname: "zs2"}, {$set: {uname: "zs22"} })
  • 练习2:将{uname: zs10}的年龄增加两岁或者减小两岁
  • db.c2.update({uname: "zs10"}, {$inc: {age: 2} }) 增加两岁db.c2.update({uname: "zs10"}, {$inc: {age: -2} }) 减小两岁
  • 练习3:插入数据: db.c2.insert({uname: “升龙教主”,age: 888, who: “男”, other:“非国人”})
  • ```` db.c2.update({uname: “升龙教主”}, {$set: {uname: “升龙大教主”} }) 修改uname的值 db.c2.update({uname: “升龙大教主”}, {$rename: {who: “sex”} }) 修改who字段的字段名 db.c2.update({uname: “升龙大教主”}, {$inc: {age: 111} }) age字段的值增加111 db.c2.update({uname: “升龙大教主”}, {$unset: {other: true} }) 删除other字段
// 一次性写多个修改器db.c2.update({uname: "升龙大教主"}, {    $set: {uname: "升龙大教主"},    $rename: {who: "sex"},    $inc: {age: 111},    $unset: {other: true}}````

查询文档

  • 语法
  • db.集合名.find(条件[,查询的字段])// 1.条件: 查询所有的数据 ---> {}或者不写 查询 age=6 的数据 ---> {age: 6} 查询age=6 同时 sex = "男"的数据 ---> {age: 6, sex: "男"} 2.查询的字段(可选参数) 不写 ---> 查询符合条件数据的所有字段 {age: 1} ---> 只显示符合条件数据的age字段 {age: 0} ---> 不显示符合条件数据的age字段(其他字段都显示) 但是不管怎么写 系统自定义的_id都会显示

| 条件 | 含义 |

| :—- | :——————- |

| $gt | 大于 |

| $lt | 小于 |

| $gte | 大于等于 |

| $lte | 小于等于 |

| $ne | 不等于 |

| $in | 包含(查询多个) |

| $nin | 不包含 |

  • 练习1:查询所有的数据
db.c1.find({})
  • 练习2:查询年龄大于5岁的数据
db.c1.find({age: {$gt: 5} })
  • 练习3:查询年龄是5岁、8岁、10岁的数据
db.c1.find({age: {$in: [5, 8, 10]} })
  • 练习4:只看年龄列(_id不考虑)
db.c1.find({},{age:1})

上一篇:JWT的引入

下一篇:前端开发:node.js入门

大家都在看

2019就业成果,是时候向大家汇报了

2024-07-08 浏览次数:0

没想到,首次面试就拿到offer了

2024-07-08 浏览次数:0

Web前端是自学好,还是去培训机构,市场饱和了吗...

2024-07-08 浏览次数:0

程序员月薪8000,丢人吗?

2024-07-08 浏览次数:0

信安干货│ARP欺骗攻击及防御

2024-07-08 浏览次数:0

干货小知识!软件测试主要有哪些步骤?

2024-07-08 浏览次数:0
最新资讯
{}或者不写 查询 age=6 的数据 ---> {age: 6} 查询age=6 同时 sex = "男"的数据 ---> {age: 6, sex: "男"} 2.查询的字段(可选参数) 不写 ---> 查询符合条件数据的所有字段 {age: 1} ---> 只显示符合条件数据的age字段 {age: 0} ---> 不显示符合条件数据的age字段(其他字段都显示) 但是不管怎么写 系统自定义的_id都会显示

| 条件 | 含义 |

| :—- | :——————- |

| $gt | 大于 |

| $lt | 小于 |

| $gte | 大于等于 |

| $lte | 小于等于 |

| $ne | 不等于 |

| $in | 包含(查询多个) |

| $nin | 不包含 |

db.c1.find({})
db.c1.find({age: {$gt: 5} })
db.c1.find({age: {$in: [5, 8, 10]} })
db.c1.find({},{age:1})

上一篇:JWT的引入

下一篇:前端开发:node.js入门

相关内容

热门资讯

就业课程介绍(Java+前端+... Java+大数据,前端全栈,信息安全
关于我们 请输入文章描述
0基础转行信安,他如何做到月薪... 转行并非简单的换份工作,而是我们在职场进行自我认同、重塑身份的一个过程。今天知了小姐姐为大家介绍一位...
【前端每日一题】什么是BFC?... 秋招马上就要开始了,小伙伴们最近在准备面试的东西没呢,知了姐今天将蛋糕哥整理的前端面试题共享出来,同...
cisp考试费用多少?cisp...   随着网络技术的快速发展,网络安全问题变得越来越重要。那么,CISP考试费用多少?CISP报名条件...
img标签的onerror事件... 1.img 标签除了 onerror 属性外,还有其他获取管理员路径的办法吗? src 指定一个远程...
pythone 文件和数据格式... 关于 Python 对文件的处理,以下选项中描述错误的是
网络安全运维岗面试题及答案详解... 在当今数字化时代,网络安全运维工程师的角色变得愈发重要。为了保障网络安全,各个企业都需要拥有一支经验...
知了堂官网V3第一版内测邀请 经过几个月的加班加点,我们终于迎来了知了堂官网3.1.0版本 现正招募内测中
川农第一次线下拓展精彩瞬间 5月15日,知了堂的哥哥姐姐们携手企业拓展教练浩浩荡荡奔赴川农。
-->