Mongodb入门到入土,安装到实战,外包半年学习的成果

这是我参与「第四届青训营 」笔记创作活动的的第27天,今天主要记录前端进阶必须掌握内容Mongodb数据库,从搭建环境到运行数据库,然后使用MongodB;

一、文章内容

  • 数据库基础知识
  • 关系型数据库和非关系型数据库
  • 为什么学习Mongodb数据库
  • 环境搭建及运行Mongodb
  • Mongodb命令之增删改查

二、数据库的基本知识

简单认识数据库

数据库说白了就是一个文件,不通的数据库有不同的存储方式,但最后归根结底都是一个文件存储在磁盘里,当然也有存储在内存中的数据库比如:redis,其次数据库文件都可以有多个数据库,一个数据库又可以有多个表(sql关系型数据库)或者一个数据库可以有多个集合(nosql非关系型数据库).

数据库的主要职责

数据库就是存储数据的.见名知意数据的仓库就是存放各种数据的仓库,视频、声音、图片等资源,一般关系型数据库存放的数据关联性很强,非关系型数据库存放的数据关联性较弱.

数据库主要功能
  • 增加数据
  • 删除数据
  • 更新数据
  • 查询数据

三、关系型数据库和非关系型数据库

关系型数据库有(sql):mysq/sql/ oracle/sqlite,非关系型数据库(nosql):redis / hbase /mongoDB /CouchDB.今天我们要学习的就是Mongodb.

sql和nosql的区别
  • sql存储是关系型数据,数据均有结构,但是nosql既可以存储有结构数据也可存储无结构数据,比较灵活.

  • sql是行和列组成,nosql存储是类似json数据那样.

分布式计算的优点

可靠性(容错) :
分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。

可扩展性:

在分布式计算系统可以根据需要增加更多的机器。

资源共享:

共享数据是必不可少的应用,如银行,预订系统。

灵活性:

由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。

更快的速度:

分布式计算系统可以有多台计算机的计算能力,使得它比其他系统有更快的处理速度。

开放系统:

由于它是开放的系统,本地或者远程都可以访问到该服务。

更高的性能:

相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。

如何选择用sql还是nosql

1)数据库表schema经常变化

2)数据库表字段是复杂数据类型

3)高并发数据库请求

4)海量数据的分布式存储

1)社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。

2)游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。

3)物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将
订单所有的变更读取出来。

4)物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。

5)视频直播,使用 MongoDB 存储用户信息、点赞互动信息等。

这些应用场景中,数据操作方面的共同特点是:

  • 数据量大
  • 写入操作频繁(读写都很频繁)
  • 价值较低的数据,对事务性要求不高
    对于这样的数据,我们更适合使用MongoDB来实现数据的存储。

应用不需要事务及复杂 join 支持
新应用,需求会变,数据模型无法确定,想快速迭代开发
应用需要2000-3000以上的读写QPS(更高也可以)
应用需要TB甚至 PB 级别数据存储
应用发展迅速,需要能快速水平扩展
应用要求存储的数据不丢失
应用需要99.999%高可用
应用需要大量的地理位置查询、文本查询
如果上述有1个符合,可以考虑 MongoDB,2个及以上的符合,选择 MongoDB 绝不会后悔。

四、为什么学习Mongodb数据库

灵活高、支持并发、面向文档存储.

五、环境搭建及运行Mongodb

在官网下载对应的系统版本可以下载window也可下载linux,我下载的是linux.
下载地址:试用 MongoDB Atlas 产品|蒙戈德点击进去后选择社区版本free的,
然后在右侧选择自己的系统和版本,如图1所示.

image.png

图1 下载界面

然后打开终端在自己选定的目录下运行
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-6.0.0.tgz

下载,然后解压使用tar -zxvf mongodb-linux-x86_64-rhel70-6.0.0.tgz.
解压好之后进去mongodb-linux-x86_64-rhel70-6.0.0目录.找到bin目录进去,
创建俩个目录一个是data存放数据库,一个log存放日志执行下面的命令开启mongo服务

./mongod --dbpath 创建好的data目录绝对路径 --logpath 创建log文件夹绝对路径/mongod.log --bind_ip=0.0.0. --fork

bind_ip=0.0.0.0远程也可以链接.
fork是后台运行mongodb服务,没有报错说明成功开启,然后输入./mongo进入数据库,在这里可以随便操作数据库了.也可以算简单的加减法.

六、Mongodb命令之增删改查

使用mongodb不需要创建表格而是需要创建集合,其实集合也不需要我们创建,直接俄操作就好,不存在集合的话,系统会自动给我们创建好;
使用show dbs 查看数据库,user 数据库 可以进入数据库;然后开始增删改查操作.

增加数据

语法如下,括号里是类似对象的文档.还有save、insetOne、insetMany,insert,save被弃用.

db.集合名字.insert({name:'我是小学生'})
删除数据

语法如下第一个参数是条件找到就删除.

db.集合名字.remove({'title':'MongoDB 教程'})
更新数据

语法如下,第一个参数是条件,第二个参数是修改的内容键值对.

db.集合名字.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
查询数据

语法如下,第一个参数是查询的条件,找到就返回

db.集合名字.find({"by":"菜鸟教程", "title":"MongoDB 教程"})

七、总结用法

1.在Mongodb中我们插入数据使用的是insert函数,其中第一个参数是需要记录的数据,形式是bson,类似于json或者是JavaScript的对象,很容易理解.

2.我们在查询和修改以及删除都需要传入一个{}对象类型的条件,比如name:“zhangsan”,就是名字等于zhangsan的这个记录,很容易理解,跟sql里的where name =“zhangsan” 一样,在mongodb里:和sql里的=一样.还有一些逻辑表达式如下.

操作语法
等于db.集合名.find({“name”:“某某人”})
小于db.集合名.find({age:{$lt:18}})
大于db.集合名.find({age: {$gt:18}})
<=db.集合名.find({age:{lte:18}})
>=db.集合名.find({age:{$gte:18}})
!=db.集合名.find({age:{$ne:22}})

当然还有or和and的操作,请看如图操作and且操作,or操作如图3所示.

image.png

图2 且查询

image.png

图3 或操作


总结且操作和或操作的语法:且就是在查询的find函数里第一个传入一个{}用逗号分隔查询的条件语句;

db.user.find({"字段1":VALUE  , "字段2":VALUE   })

如果是或操作就是这样的语法:

db.user.find({$or:[{"字段1":VALUE } ,{ "字段2":VALUE   }]})
  1. 在查询时候find()可以传俩个函数第一个是条件,第二个参数是显示的字段,不填第二个参数就和sql里的*类似返回全部,如果要选择填写可以这样传参{“age”:1},只需要写显示的字段名,然后冒号1.

八、最后总结

通过本文可以简单的学习掌握基本的数据库知识和简单增删改查操作,如果有不懂的的地方欢迎留言,最后mongodb是前端必学的数据库.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/562925.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ai技术】(4):在树莓派上,使用qwen0.5b大模型+chatgptweb,搭建本地大模型聊天环境,速度飞快,非常不错!

1&#xff0c;视频地址 https://www.bilibili.com/video/BV1VK421i7CZ/ 2&#xff0c;下载镜像 raspberry-pi-os-64-bit https://blog.csdn.net/freewebsys/article/details/136921703 项目地址&#xff1a; https://www.raspberrypi.com/software/operating-systems/#rasp…

38 mars3d 对接地图图层 绘制点线面员

前言 这里主要是展示一下 mars3d 的一个基础的使用 主要是设计 接入地图服务器的 卫星地图, 普通的二维地图, 增加地区标记 基础绘制 点线面园 等等 测试用例 <template><div style"width: 1920px; height:1080px;"><div class"mars3dClas…

I2C系列(三):软件模拟I2C读写24C04

一.目标 PC 端的串口调试软件通过 RS-485 与单片机通信&#xff0c;控制单片机利用软件模拟 I2C 总线对 EEPROM&#xff08;24C04&#xff09; 进行任意读写。 二.RS-485简述 在工业控制领域&#xff0c;传输距离越长&#xff0c;要求抗干扰能力也越强。由于 RS-232 无法消除…

HTTP(2)

HTTP 通信过程包括从客户端发往服务器端的请求及从服务器端返回客户端的响应。 那么请求和响应是怎样运作的呢 HTTP 报文 用于 HTTP 协议交互的信息被称为 HTTP 报文。 请求端&#xff08;客户端&#xff09;的HTTP 报文叫做请求报文&#xff0c;响应端&#xff08;服务器…

OpenCV学习笔记(十一)——利用Sobel算子计算梯度

Sobel算子是基于一阶导数的离散差分算子&#xff0c;其中Sobel对于像素值的变化是十分敏感的&#xff0c;在进行边缘检测的时候&#xff0c;Sobel算子常用于对周围像素的重要性进行检测。 Sobel算子包括检验水平方向的算子和检测竖直方向的算子 计算机梯度值的操作如下&#x…

C#,图论与图算法,用于检查给定图是否为欧拉图(Eulerian Graph)的算法与源程序

1 欧拉图 欧拉图是指通过图(无向图或有向图)中所有边且每边仅通过一次通路, 相应的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph), 具有欧拉通路而无欧拉回路的图称为半欧拉图。 对欧拉图的一个现代扩展是蜘蛛图,它向欧拉图增加了可以连接的存在点。 这给…

零基础-MySQL数据库的基本操作

①MYSQL数据库基本操作-DDL 1.DDL的解释 DDL&#xff08;Data Definition Language&#xff09;&#xff0c;数据定义语言&#xff0c;包括以下内容&#xff1a; 对数据库的常用操作 对表结构的常用操作 修改表结构 2.对数据库的常用操作 功能SQL查看所有的数据库show d…

从产品组装和维护/维修的角度来看,基于增强现实的指导:关于挑战和机遇的最新综述

作者&#xff1a; 1. M. Eswaran 2. Anil Kumar Gulivindala 3. M.V.A.Raju Bahubalendruni 关于本文 •分析了增强现实在装配和维护/维修中的作用。 •讨论了AR辅助制造系统的软件和硬件元素。 •讨论了AR跟踪和配准技术面临的挑战。 •讨论了AR辅助制造系统的未来…

GDC期间LayaAir启动全球化战略

3 月 18 日至 3 月 22 日&#xff0c;一年一度的游戏开发者大会&#xff08;GDC&#xff09;在美国旧金山举行。在此期间&#xff0c;Layabox宣布LayaAir引擎启动全球扩张战略&#xff0c;这标志着引擎将步入快速发展的新阶段。此举旨在利用公司先进的3D引擎技术&#xff0c;将…

【小沐学Python】Python实现Web图表功能(Lux)

文章目录 1、简介2、安装3、测试3.1 入门示例3.2 入门示例2 结语 1、简介 https://github.com/lux-org/lux 用于智能可视化发现的 Python API Lux 是一个 Python 库&#xff0c;通过自动化可视化和数据分析过程来促进快速简便的数据探索。通过简单地在 Jupyter 笔记本中打印出…

【redis】服务器架构演进

架构演进 单机架构应用数据分离架构应⽤服务集群架构读写分离 / 主从分离架构冷热分离架构垂直分库微服务架构 单机架构 所有的应用服务、业务所需的数据、业务处理等都在一台服务器上。 在初期&#xff0c;用户访问量很少&#xff0c;对服务器的的性能和安全没有很高的要求&am…

NFT交易市场-后端开发

首先我们需要配置好我们的ipfs&#xff0c;参考官方文档 1.https://docs.ipfs.tech/install/command-line/#system-requirementshttps://docs.ipfs.tech/how-to/command-line-quick-start/#initialize-the-repository 首先新建一个文件夹 然后在终端输入npm init -y命令进行初…