前言
想要入门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提供了以下向集合中插入文档的方法:
db.collection.insertOne() //New in version 3.2 插入一条文档(document)
db.collection.insertMany() //New in version 3.2 插入多条文档(document)
db.collection.insert()//老版本语法
MongoDB的insert的语法如上,更推荐使用insertOne和insertMany,分别用来插入一条和多条文档。注意,在实际使用时collection要改成待插入集合的名称,待插入文档(document)需要插入到对应集合(collection)中,否则会默认创建一个集合再插入进去。在这里我们插入一条文档到student集合中。
使用mongo数据库之前要执行语句:
use mongo
,执行完毕即可直接操作mongo数据库。
向student集合中插入单条文档(document),执行以下语句:
db.student.insertOne({"name": "bigsai","age":"22"})
插入多条文档(document),执行以下语句:
db.student.insertMany([{"name": "bigsai2","age":"22"},{"name": "bigsai3","age":"22"}])
打开student集合,会发现上面的文档(document)被成功插入了。
3.3 MongoDB的查询操作
查询操作完成从集合中查询文档,MongoDB提供了以下向集合中插入文档的方法:
db.collection.find()//查询文档,在括号内添加各种条件
你可以指定查询过滤器或条件以标识要返回的文档。当然MongoDB也支持各种条件查询,使用也非常简单,具体还需要查看官方文档(https://docs.mongodb.com/manual/tutorial/query-documents/),这里以查询student集合中数据字段age为22的文档为例,展示一下:
//db.student.find()//查询所有类似select * from student db.student.find({"age":"22"})
可以看到查询结果如下,所有数据字段age为22的文档都被查询了出来。
3.4 MongoDB的更新操作
更新操作,又称修改操作,完成从集合中更新(修改)文档,MongoDB提供了以下更新集合文档的方法:
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:
db.student.updateOne( {"age":"22"},//条件 {$set:{"name":"bigsai2"}}//修改的值 )
其中{“age”:“22”}为查询的条件即找到第一条数据字段age为22的文档,而{$set:{}}则用来修改文档对应数据字段的值。updateOne()执行成功只会更新第一条匹配的文档。
此时,你如果想将数据字段name为bigsai2的两条文档的数据字段age改成18,那么执行以下语句:
db.student.updateMany( {"name":"bigsai2"}, {$set:{"age":"18"}} )
刷新结果会发现文档已经成功被更新,这种语句在sql中就类似update student set age=18 where name=bigsai2
3.5 MongoDB的删除操作
删除操作完成从集合中删除文档,MongoDB提供了以下删除集合文档的方法:
db.collection.deleteOne() //3.2版中的新功能 删除一条记录 db.collection.deleteMany() //3.2版中的新功能 删除多条记录
在MongoDB中,删除操作只针对单个集合(db.collection中对应的collection)。MongoDB中的删除操作都是单个文档级别的原子操作,你可以指定标准或过滤器,以标识要删除的文档。这些过滤器与查询、更新使用的过滤器用法一致。
这里delete和update操作的条件有点类似,如果使用deleteOne()语句会删除第一个匹配的文档,而使用deleteMany()会删除所有满足条件的文档。
如果我们删除所有数据字段name为bigsai2的文档可以这么操作:
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我也是小白,摸索着学了一遍并总结成文字,希望能帮到你!