一文快速入门MongoDB数据库

2021-12-07 12:49:22 浏览数 (1)

文章目录

    • 前言
    • 下载 MongoDB 之Windows版
    • 下载 MongoDB之Mac版本安装
    • 一 MongoDB的应用场景
    • 二 MongoDB与Mysql的对比
      • MySQL是关系型数据库。
      • Mongodb是非关系型数据库(nosql ),属于文档型数据库。
      • Mysql和Mongodb应用场景的对比
    • 三 MongoDB的增删改查
      • 补充: [studio3T的安装](https://studio3t.com/download/)
    • 总结

前言

想要入门MongoDB,首先需要下载MongoDB:

下载 MongoDB 之Windows版

要在 Windows 系统上安装 MongoDB,首先需要在 MongoDB 的官网(https://www.mongodb.com/try/download/community)下载 MongoDB 的安装包,如下图所示:

下载 MongoDB 安装包

提示:下载前需要先注册/登陆 MongoDB 官网的账号。

安装 MongoDB 【步骤 1】双击运行我们刚刚下载的 .msi 格式的 MongoDB 安装包,在弹出的窗口种单击 Next,如下图所示:

运行 MongoDB 安装包

【步骤 2】接受用户许可协议,并单击 Next,如下图所示:

接受用户协议

【步骤 3】单击 Custom(自定义)按钮来自定义安装,如下图所示:

自定义安装

【步骤 4】修改安装目录,并单击 Next,如下图所示:

自定义安装目录

【步骤 5】选中“Install MongoD as a Service”,并在下面的选项中选择“Run service as Network Service user”,完成后单击 Next,如下图所示:

安装 Windows 服务

【步骤 6】取消“Install MongoDB Compass”的勾选(当然您也可以选择安装它,但这样就需要花费更久的安装时间),MongoDB Compass 是一个图形界面管理工具,后面如果需要我们也可以再单独下载(https://www.mongodb.com/try/download/compass)和安装它,完成上述操作后单击 Next,如下图所示:

取消“Install MongoDB Compass”的勾选

【步骤 7】单击“Install”按钮开始安装。

开始安装

【步骤 8】等待安装完成,单击“Finish”按钮退出安装程序即可完成安装。

完成安装 图:完成安装 验证安装 不出意外的话,完成上面的一系列操作后 MongoDB 就成功安装到您的电脑上了。想要验证安装是否成功,您可以打开“服务”,如果能在服务列表中找到 MongoDB Server,就说明 MongoDB 已经安装成功。

MongoDB Server 服务

????下载 MongoDB之Mac版本安装

在 Mac OS 系统下安装 MongoDB 与在 Linux 下安装比较相似,本节我们就来详细介绍一下 Mac OS 系统下如何安装 MongoDB。 下载 MongoDB 与在 Linux 系统下安装 MongoDB 相同,首先我们需要在 MongoDB 的官网获得 MongoDB 安装包的下载链接,如下图所示:

MongoDB 官网

得到下载链接后,使用cd命令进入 /usr/local 目录,然后使用wget命令下载 MongoDB 的压缩包,命令如下: cd /usr/local sudo wget https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-4.4.3.tgz

安装 MongoDB 待压缩包下载完成后就可以尝试安装 MongoDB 了,具体的安装步骤如下:

【步骤 1】解压缩刚刚下载的压缩包,并将其重命名为 mongodb: sudo tar -zxvf mongodb-macos-x86_64-4.4.3.tgz # 解压 MongoDB 压缩包 sudo mv mongodb-osx-ssl-x86_64-4.0.17/ mongodb # 重命名解压得到的文件夹

【步骤 2】在 /usr/local/mongodb 目录下新建两个文件夹 data 和 log,用于存储 MongoDB 的数据和日志。 sudo mkdir -p /usr/local/mongodb/data sudo mkdir -p /usr/local/mongodb/log

使用如下命令为当前用户分配目录的读写权限: sudo chown biancheng /usr/local/mongodb/data sudo chown biancheng /usr/local/mongodb/log

其中“biancheng”为当前的用户名,您需要修改为您当前系统的用户名。

【步骤 3】配置 PATH。在终端中输入open -e .bash_profile命令打开 bash_profile 配置文件,然后将 MongoDB 的安装目录下的 bin 目录添加到环境变量中,如下所示: export PATH=${PATH}:/usr/local/mongodb/bin

编辑完成后保存并退出,然后使用source .bash_profile命令使配置立即生效。

【步骤 4】使用下面的命令来启动 MongoDB 服务: mongod --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/log/mongo.log --fork

参数说明如下: –dbpath 用来设置数据的存放目录; –logpath 用来设置日志的存放目录; –fork 用来设置在后台运行。

至此 MongoDB 就安装完成了。 验证安装 您可以使用mongod -version命令来验证 MongoDB 是否安装成功,如果出现类似下面所示的内容,则说明 MongoDB 安装成功。 mongod -version

db version v4.0.10 git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766 allocator: tcmalloc modules: none build environment: distmod: 2008plus-ssl distarch: x86_64 target_arch: x86_64

一 MongoDB的应用场景

网站实时数据的插入、更新、删除。 处理规模较大但是成本很高的数据(大尺寸、低价值数据) 对象或JSON的文本存储 不需要经常通过表计算的,对事务要求不高的数据。 一些应用层的缓存

社交场景,使用 MongoDB 存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。 物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。 物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。 视频直播,使用 MongoDB 存储用户信息、点赞互动信息等。

这些场景都有数据量大写入操作频繁数据价值较低事务性要求不高的特点。

二 MongoDB与Mysql的对比

MySQL是关系型数据库。

优势:

在不同的引擎上有不同 的存储方式。

查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。

开源数据库的份额在不断增加,mysql的份额页在持续增长。

缺点:

在海量数据处理的时候效率会显著变慢。

Mongodb是非关系型数据库(nosql ),属于文档型数据库。

文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。

存储方式:虚拟内存 持久化。

查询语句:是独特的Mongodb的查询方式。

适合场景:事件的记录,内容管理或者博客平台等等。

架构特点:可以通过副本集,以及分片来实现高可用。

数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。

成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

优点:

快速!在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。高扩展性,存储的数据格式是json格式!

缺点:

不支持事务,而且开发文档不是很完全,完善。

Mysql和Mongodb应用场景的对比

1.如果需要将mongodb作为后端db来代替mysql使用,即这里mysql与mongodb 属于平行级别,那么,这样的使用可能有以下几种情况的考量: (1)mongodb所负责部分以文档形式存储,能够有较好的代码亲和性,json格式的直接写入方便。(如日志之类) (2)从datamodels设计阶段就将原子性考虑于其中,无需事务之类的辅助。开发用如nodejs之类的语言来进行开发,对开发比较方便。 (3)mongodb本身的failover机制,无需使用如MHA之类的方式实现。

2.将mongodb作为类似redis ,memcache来做缓存db,为mysql提供服务,或是后端日志收集分析。 考虑到mongodb属于nosql型数据库,sql语句与数据结构不如mysql那么亲和 ,也会有很多时候将mongodb做为辅助mysql而使用的类redis memcache 之类的缓存db来使用。 亦或是仅作日志收集分析。

三 MongoDB的增删改查

3.1 创建数据库

我们使用studio 3T创建数据库和collection,数据库名为mongo。如果不创建数据库,向mongoDB中插入数据会默认插入到test数据库中。

然后在数据库中添加集合(collection),集合名为student: 可以发现student集合已经被成功添加了:

MongoDB的读操作包括查询,而写操作包括插入、更新、删除,MongoDB中的所有写操作都是单个文档级别的原子操作,你可以指定查询、更新、删除标准或过滤器(查询、更新、删除更新的条件),以标识要查询、更新、删除的文档。过滤器可以理解为关系数据库的条件查询where子句的条件。 3.2 MongoDB的插入操作

插入操作完成向集合中插入文档,MongoDB提供了以下向集合中插入文档的方法:

代码语言:javascript复制
db.collection.insertOne() 
//New in version 3.2 插入一条文档(document)
代码语言:javascript复制
db.collection.insertMany() 
//New in version 3.2 插入多条文档(document)
代码语言:javascript复制
db.collection.insert()//老版本语法 

MongoDB的insert的语法如上,更推荐使用insertOne和insertMany,分别用来插入一条和多条文档。注意,在实际使用时collection要改成待插入集合的名称,待插入文档(document)需要插入到对应集合(collection)中,否则会默认创建一个集合再插入进去。在这里我们插入一条文档到student集合中。

使用mongo数据库之前要执行语句:

use mongo

,执行完毕即可直接操作mongo数据库。

向student集合中插入单条文档(document),执行以下语句:

代码语言:javascript复制
db.student.insertOne({"name": "bigsai","age":"22"})

插入多条文档(document),执行以下语句:

代码语言:javascript复制
db.student.insertMany([{"name": "bigsai2","age":"22"},{"name": "bigsai3","age":"22"}])

打开student集合,会发现上面的文档(document)被成功插入了。

3.3 MongoDB的查询操作

查询操作完成从集合中查询文档,MongoDB提供了以下向集合中插入文档的方法:

代码语言:javascript复制
db.collection.find()//查询文档,在括号内添加各种条件

你可以指定查询过滤器或条件以标识要返回的文档。当然MongoDB也支持各种条件查询,使用也非常简单,具体还需要查看官方文档(https://docs.mongodb.com/manual/tutorial/query-documents/),这里以查询student集合中数据字段age为22的文档为例,展示一下:

代码语言:javascript复制
//db.student.find()//查询所有类似select * from student

db.student.find({"age":"22"})

可以看到查询结果如下,所有数据字段age为22的文档都被查询了出来。

3.4 MongoDB的更新操作

更新操作,又称修改操作,完成从集合中更新(修改)文档,MongoDB提供了以下更新集合文档的方法:

代码语言:javascript复制
db.collection.updateOne() //3.2版中的新功能 更新一条文档记录

db.collection.updateMany() //3.2版中的新功能 更新多条文档记录

db.collection.replaceOne() //3.2版中的新功能 替换集合中的一个文档

在MongoDB中,更新操作只针对单个集合(db.collection中对应的collection)。MongoDB中的更新操作都是单个文档级别的原子操作,你可以指定更新标准或过滤器(更新的条件),以标识要更新的文档。当然MongoDB有update()方法但是已经被弃用。

我们将student集合中所有数据字段age为22的文档更新其数据字段name的值为bigsai2:

代码语言:javascript复制
db.student.updateOne(

     {"age":"22"},//条件

     {$set:{"name":"bigsai2"}}//修改的值

 )

其中{“age”:“22”}为查询的条件即找到第一条数据字段age为22的文档,而{$set:{}}则用来修改文档对应数据字段的值。updateOne()执行成功只会更新第一条匹配的文档。

此时,你如果想将数据字段name为bigsai2的两条文档的数据字段age改成18,那么执行以下语句:

代码语言:javascript复制
db.student.updateMany(

     {"name":"bigsai2"},

     {$set:{"age":"18"}}

 )

刷新结果会发现文档已经成功被更新,这种语句在sql中就类似update student set age=18 where name=bigsai2

3.5 MongoDB的删除操作

删除操作完成从集合中删除文档,MongoDB提供了以下删除集合文档的方法:

代码语言:javascript复制
db.collection.deleteOne() //3.2版中的新功能 删除一条记录

db.collection.deleteMany() //3.2版中的新功能 删除多条记录

在MongoDB中,删除操作只针对单个集合(db.collection中对应的collection)。MongoDB中的删除操作都是单个文档级别的原子操作,你可以指定标准或过滤器,以标识要删除的文档。这些过滤器与查询、更新使用的过滤器用法一致。 这里delete和update操作的条件有点类似,如果使用deleteOne()语句会删除第一个匹配的文档,而使用deleteMany()会删除所有满足条件的文档。

如果我们删除所有数据字段name为bigsai2的文档可以这么操作:

代码语言:javascript复制
db.student.deleteMany(
     {"name":"bigsai2"}//条件
 )

可以发现文档被成功删除:

补充: studio3T的安装

一、说明 1、windows: win10企业版。

2、Studio 3T: Studio 3T 2020.1.2

二、Studio 3T 下载与安装

1、下载 进入到Studio 3T 下载地址进行下载。选择合适的版本进行下载。

2、安装 (1)双击安装文件进行安装

(2)点击Next按钮进行下一步

(3)点击Next按钮进行下一步。

(4)设置安装路径,然后点击Next进行下一步。

(5)点击Finish完成安装。

3、创建连接 (1)启动Studio 3T,然后点击 Connect。

(2)点击 New Connection。

(3)设置连接信息

(4)点击Connect创建连接

创建连接成功结果后如下图所示:

引用文档如下: https://ke.boxuegu.com/detail/3202.html https://blog.csdn.net/u010398771/article/details/98958518 https://www.cnblogs.com/1488boss/p/10754290.html http://c.biancheng.net/mongodb2/install-on-macos.html https://blog.csdn.net/cckavin/article/details/104293178

总结

到这里恭喜你入门了MongoDB数据库,MongoDB我也是小白,摸索着学了一遍并总结成文字,希望能帮到你!

0 人点赞