❤️一文快速入门MongoDB数据库❤️

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: ❤️一文快速入门MongoDB数据库❤️

前言

想要入门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我也是小白,摸索着学了一遍并总结成文字,希望能帮到你!


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
7天前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
36 15
|
15天前
|
存储 NoSQL 关系型数据库
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
|
1月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
2月前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
2月前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
24 1
|
2月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
2月前
|
存储 NoSQL MongoDB
mongodb的数据库表怎么创建
在此过程中,理解并掌握这些基本操作,是深入探索MongoDB魅力,乃至构建高效数据解决方案的关键所在。通过实践,您将更加深刻地体会到这种随需应变的数据管理模式带来的便利与效率提升。
49 0
|
4天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
18 3
|
4天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
22 3
|
4天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
28 2