MongoDB从入门到实战之MongoDB简介
前言
相信很多同学对MongoDB这个非关系型数据库都应该挺熟悉的,在一些高性能、动态扩缩容、高可用、海量数据存储、数据价值较低、高扩展的业务场景下MongoDB可能是我们的首选,因为MongoDB通常能让我们以更低的成本解决问题(包括学习、开发、运维等成本)。接下来的一个月博主将会从基础出发,编写一个关于使用MongoDB从入门到实战的相关教程,该项目后端使用的是.NET7、前端页面使用Blazor、使用MongoDB存储数据,更多相关内容大家可以看目录中的MongoDB从入门到实战的相关教程。该系列教程可作为.NET Core入门项目进行学习,感兴趣的小伙伴可以关注博主和我一起学习共同进步。
MongoDB从入门到实战的相关教程
MongoDB从入门到实战之MongoDB快速入门
MongoDB从入门到实战之Docker快速安装MongoDB
MongoDB从入门到实战之MongoDB工作常用操作命令
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(1)-后端项目框架搭建
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(2)-系统数据集合设计
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(3)-MongoDB连接和基本操作封装
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(4)-Blazor快速入门
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(5)-Blazor前端框架搭建
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(6)-用户登录注册模块开发
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(7)-用户JWT授权验证
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(8)-TodoList增删改查功能开发
MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(9)-Docker打包并部署
MongoDB是什么?
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似Json的Bson格式,因此可以存储比较复杂的数据类型。
MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。并且MongoDB-4.2版本开始已经支持分布式事务功能。
简而言之的话就是:MongoDB是一个文档型的NoSQL数据库,用于构建高并发、高可用和高扩展的互联网应用程序。
什么是Bson格式?
Bson是一种类Json的一种二进制形式的存储格式,简称Binary Json,它和Json一样,支持内嵌的文档对象和数组对象,但是Bson有Json没有的一些数据类型,如Date和BinData类型。
Bson可以做为网络数据交换的一种存储形式,这个有点类似于Google的Protocol Buffer,但是Bson是一种schema-less的存储形式,它的优点是灵活性高,但它的缺点是空间利用率不是很理想,Bson有三个特点:轻量性、可遍历性、高效性,
{“hello":"world"} 这是一个Bson的例子,其中"hello"是key name,它一般是cstring类型,字节表示是cstring::= (byte*) "/x00" ,其中*表示零个或多个byte字节,/x00表示结束符;后面的"world"是value值,它的类型一般是string,double,array,binarydata等类型。
MongoDB的优势
1.高性能
MongoDB提供高性能的数据持久性。对嵌入式数据模型的支持减少了数据库系统上的IO活动。
索引支持更快的查询,并且包含嵌入式文档和数组的键。
- 文本索引解决搜索的需求;
- TTL索引解决历史数据自动过期的需求;
- 地理位置索引可用于构建各种 O2O 应用;
2.高可用
MongoDB的复制工具称为副本集(reolica set),它包含提供自动故障转移和数据冗余。
3.海量数据存储
内置GridFS,支持海量存储。
4.丰富的查询支持
MongoDB支持丰富的查询语言,支持读写(CRUD)操作、比如数据聚合、文本搜索、地理空间查询等。
5.支持多种编程语言
MongoDB支持多种流行编程语言如C,C++,C# / .NET,Erlang,Haskell,Java,PHP,Python,Go等多种语言。
6、其他特点
如可拓展性强模式自由、动态模式、灵活的文档模型等。
MongoDB的劣势
- 单机可靠性比较差。
- 在集群分片中的数据分布不均匀。
- 磁盘空间占用比较大。
- 大数据量持续插入,写入性能有较大波动。
MongoDB业务应用场景
四高场景应对:
传统的关系型数据库(如MySQL,MS SQL Server),在数据操作的四高需求以及应对Web2.0的网站需求面前显得力不从心,而MongoDB可更好的应对四高需求:
- High performance(高性能):对数据库高并发读写的需求。
- Huge Storage(海量存储):对海量数据的高效率存储和访问的需求。
- High Scalability && High Availability(高可扩展性和高可用性):对数据库的高可扩展性和高可用性的需求。
具体应用场景:
- 游戏应用:使用MongoDB作为游戏服务器的数据库存储用户信息。用户的游戏装备、积分等直接以内嵌文档的形式存储,方便进行查询与更新。
- 物流应用:使用MongoDB存储订单信息,订单状态在运送过程中会不断更新,以MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来,方便快捷且一目了然。
- 社交应用:使用MongoDB存储用户信息以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。并且MongoDB非常适合用来存储聊天记录,因为它提供了非常丰富的查询,并在写入和读取方面都相对较快。
- 视频直播:使用MongoDB存储用户信息、礼物信息等。
- 大数据应用:使用MongoDB作为大数据的云存储系统,随时进行数据提取分析,掌握行业动态。
这些应用场景中,数据操作方面的共同特点是:
对于下面的这些数据,我们更适合使用 MongoDB来实现数据的存储:
- 数据量大。
- 读写操作频繁。
- 价值较低的数据,对事务性要求不高。
MongoDB语言支持

MongoDB有官方的驱动如下:
MongoDB发展史
- MongoDB 最初由一个名为 10gen 的组织在 2007 年开发的,并在 2009 年 2 月发布了 MongoDB 1.0 版本,其中提供了大部分基本的查询功能。
- 2009 年 12 月发布了 MongoDB 1.2 版本,其中引入了 map-reduce(一种编程模型,用于大规模数据集(大于 1TB)的并行运算),让 MongoDB 拥有了支持大规模数据处理的能力。
- 2010 年 3 月发布了 MongoDB 1.4 版本,该版本中引入了创建后台索引的功能。
- 2010 年 8 月发布了 MongoDB 1.6 版本,该版本种引入了一些主要特性,比如用于水平伸缩的分片、具备自动故障转移能力的副本集以及对 IPv6 的支持。
- 2012 年 8 月发布了 MongoDB 2.2 版本,该版本引入了聚合管道功能,可以将多个数据处理步骤组合成一个操作链。
- 2013 年 3 月发布了 MongoDB 2.4 版本,并在 Mongo Shell(一个与 MongoDB 交互的组件)中引入了文本搜索和谷歌的 V8 JS 引擎等增强功能。另外,还发布了 MongoDB 的企业版,企业版中另外提供了监控和安全集成等附加功能。
- 2015 年 3 月发布了 MongoDB 3.0 版本,该版本中引入了新的 WiredTiger 存储引擎、可插拔存储引擎 API 并增加了 50 个副本集限制和安全改进。同年晚些时候又发布了 MongoDB 3.2 版本,该版本增加了文档验证、部分索引的功能。
- 2017 年 11 月发布了 MongoDB 3.6 版本,该版本为多集合连接查询、变更流和使用 JSON 模式进行文档验证提供了更好的支持。MongoDB 3.6 是微软 Azure CosmosDB(截止到 2020 年 8 月)能够支持的最新版本。
- 2018 年 6 月发布了 MongoDB 4.0 版本,该版本提供了跨文档处理事务的能力。
- 2019 年 8 月发布了 MongoDB 4.2 版本,该版本中引入分布式事务处理的能力。
参考文章
https://www.mongodb.com/docs/drivers/
MongoDB从入门到实战之MongoDB简介的更多相关文章
- Mongodb的入门(8)mongodb事物分析
老生常谈:<在前面博客中也介绍过> mongodb官网:https://docs.mongodb.com/manual/introduction/ mongodb:官网上是这样定义的Mon ...
- MongoDB快速入门学习笔记8 MongoDB的java驱动操作
import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; import org.bson.D ...
- MongoDB快速入门学习笔记7 MongoDB的用户管理操作
1.修改启动MongoDB时要求用户验证加参数 --auth 即可.现在我们把MongoDB服务删除,再重新添加服务 mongod --dbpath "D:\work\MongoDB\dat ...
- MongoDB快速入门学习笔记6 MongoDB的文档删除操作
db.集合名称.remove({query}, justOne)query:过滤条件,可选justOne:是否只删除查询到的第一条数据,值为true或者1时,只删除一条数据,默认为false,可选. ...
- MongoDB快速入门学习笔记5 MongoDB的文档修改操作
db.集合名称.update({query},{update},upsert, multi})query:过滤条件update:修改内容upsert:如果不存在查询条件查出的记录,是否插入一条数据,默 ...
- MongoDB快速入门学习笔记3 MongoDB的文档插入操作
1.文档的数据存储格式为BSON,类似于JSON.MongoDB插入数据时会检验数据中是否有“_id”,如果没有会自动生成.shell操作有insert和save两种方法.当插入一条数据有“_id”值 ...
- MongoDB快速入门学习笔记2 MongoDB的概念及简单操作
1.以下列举普通的关系型数据库和MongoDB数据库简单概念上的区别: 关系型数据库 MongoDB数据库 说明 database database 数据库 table collection 数据库表 ...
- MongoDB快速入门学习笔记4 MongoDB的文档查询操作
先把student删除,再重新插入数据 > db.student.drop() true > db.student.insert([{ "_id" : 1, " ...
- mongodb的入门学习
mongodb的入门学习 简介: MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库 ...
- MongoDB系列---入门安装操作
MongoDB 学习大纲: 1.MongoDB简介与其它数据库对比以及数据类型 2.MongoDB安装 3.MongoDB简单操作 环境要求: Linux 一.MongoDB简介 1 什么是Mongo ...
随机推荐
- OFD是什么
OFD是什么? 原文链接:OFD是什么 OFD更多了解:OFD (Open Fixed layout Document/开放版式文档) OFD格式文件介绍 OFD(Open Fixed layout ...
- POJ1681 Painter's Problem(高斯消元)
题目看似与线性方程组无关,但可以通过建模转化为线性方程组的问题. 对于一块砖,刷两次是没有必要的,我们令x=1表示刷了一次,x=0没有刷,一共有n*n个,所以相当于有n*n个未知量x. 定义aij表示 ...
- Spring Boot 配置 jar 包外面的 Properties 配置文件
一.概述 Properties 文件是我们可以用来存储项目特定信息的常用方法.理想情况下,我们应该将其保留在 jar 包之外,以便能够根据需要对配置进行更改. 在这个教程中,我们将研究在 Spring ...
- Spring_Boot项目集成Swagger填坑
事情是这样的: 最近疫情在家里闲的无聊 看了看Swagger-2 在练习的过程出现了错误 写个帖子 希望跟我有同样问题的朋友可以避雷. 下面进入正题: 编辑 我使用的swagger-2版本是2.9.4 ...
- String简介
String:字符串,使用一对""引起来表示. 1.String声明为final的,不可被继承 2.String实现了Serializable接口:表示字符串是支持序列化的.实现了 ...
- 使用react+redux实现弹出框案例
redux 实现弹出框案例 实现效果,点击显示按钮出现弹出框,点击关闭按钮隐藏弹出框 新建弹出框组件 src/components/Modal.js, 在index.js中引入app组件,在app中去 ...
- 文本转语音TTS(文本阅读和视频配音制作)MP3
DL-TTS 通过AI驱动引擎可将文本转化为逼真的语音,它可以:(1)生成逼真的合成语音实现与人声的语调和情感匹配的流畅.发音自然的文本转语音.(2)细化的文本转语音控制支持多种语言,并可调整语速.语 ...
- Pytorch模型量化
在深度学习中,量化指的是使用更少的bit来存储原本以浮点数存储的tensor,以及使用更少的bit来完成原本以浮点数完成的计算.这么做的好处主要有如下几点: 更少的模型体积,接近4倍的减少: 可以更快 ...
- 【题解】CF45I TCMCF+++
题面传送门 题目描述 有 \(n\) 个数 \(a_i\) 请你从中至少选出一个数,使它们的乘积最大 解决思路 对于正数,对答案一定有贡献(正数越乘越大),所以输入正数时直接输出即可. 对于负数,如果 ...
- C++初阶(封装+多态--整理的自认为很详细)
继承 概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类.继承呈现了面向对象程序设计的层次结构,体现了由简单 ...