什么是 MongoDB ?

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 10月更文挑战第10天

MongoDB 是一个文档型数据库,数据以类似 JSON 的文档形式存储。

MongoDB 的设计理念是为了应对大数据量、高性能和灵活性需求。

MongoDB使用集合(Collections)来组织文档(Documents),每个文档都是由键值对组成的。

  • 数据库(Database):存储数据的容器,类似于关系型数据库中的数据库。
  • 集合(Collection):数据库中的一个集合,类似于关系型数据库中的表。
  • 文档(Document):集合中的一个数据记录,类似于关系型数据库中的行(row),以 BSON 格式存储。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成,文档类似于 JSON 对象,字段值可以包含其他文档,数组及文档数组:


主要特点

  • 文档导向的存储:MongoDB 是一个面向文档的数据库,它以 JSON-like 的格式存储数据,使得数据结构更加灵活和丰富。
  • 索引优化查询:MongoDB 允许用户为文档中的任意属性创建索引,例如 FirstNameAddress,从而提高查询效率和排序性能。
  • 数据镜像与扩展性:通过本地或网络创建数据的副本,MongoDB 实现了强大的数据冗余和扩展能力。
  • 水平扩展与分片:面对增加的负载,MongoDB 可以通过分片技术将数据分布到计算机网络中的其他节点上,实现水平扩展。
  • 强大的查询语言:MongoDB 使用 JSON 格式的查询语法,支持复杂的查询表达式,包括对内嵌对象和数组的查询。
  • 数据更新:利用 update() 命令,MongoDB 能够替换整个文档或更新指定的数据字段,提供了灵活的数据更新方式。
  • MapReduce 批量处理:MongoDB 的 MapReduce 功能专为大规模数据处理和聚合操作设计,通过 Map 函数的 emit(key, value) 调用和 Reduce 函数的逻辑处理,实现高效的数据汇总。
  • MapReduce 脚本编写:Map 和 Reduce 函数使用 JavaScript 编写,可以通过 db.runCommandmapreduce 命令在 MongoDB 中执行。
  • GridFS 大文件存储:GridFS 是 MongoDB 内置的功能,用于存储和检索大于 BSON 文档大小限制的文件,如图片和视频。
  • 服务端脚本执行:MongoDB 允许在服务端执行 JavaScript 脚本,提供了直接在服务端执行或存储函数定义以供后续调用的能力。
  • 多语言支持:MongoDB 提供了对多种编程语言的支持,包括但不限于 RUBY、PYTHON、JAVA、C++、PHP 和 C#。
  • 安装简单:MongoDB 的安装过程简单直观,便于用户快速部署和使用。

历史

版本 发布日期 特性说明
1.0 2009年8月 每个集合更多的索引
更快的索引创建
1.2 2009年12月 Map/Reduce
存储的 JavaScript 函数
可配置的 fsync 时间
几个小特性和修复
1.4 2010年3月 生产就绪的分片(sharding)
1.6 2010年8月 副本集(replica sets)
支持 IPv6
1.8 2011年3月
2.0 2011年9月
2.2 2012年8月 增强的地理空间支持
切换到 V8 JavaScript 引擎
2.4 2013年3月 安全性增强
文本搜索(beta)
哈希索引
聚合增强
文本搜索集成
2.6 2014年4月8日 查询引擎改进
新的写操作协议
安全性增强
WiredTiger 存储引擎支持
可插拔存储引擎 API
3.0 2015年3月3日 SCRAM-SHA-1 认证
改进的 explain 功能
MongoDB Ops Manager
副本集选举增强
WiredTiger 存储引擎默认
3.2 2015年12月8日 配置服务器作为副本集
读关注
从 V8 切换到 SpiderMonkey
线性化读关注
3.4 2016年11月29日 视图
排序(collation)
3.6 2017年11月
4.0 2018年6月 事务
4.2 2019年8月
4.4 2020年7月
4.4.5 2021年4月
4.4.6 2021年5月 面向未来的版本化 API
5.0 2021年7月13日 客户端字段级加密
实时重分片
时间序列支持
6.0 2022年7月
7.0 2023年8月15日

MongoDB 下载

你可以在 MongoDB 官网下载该安装包,地址为:https://www.mongodb.com/try/download/community

MongoDB 支持以下平台:

  • Linux:MongoDB 支持各种 Linux 发行版,包括但不限于 Ubuntu、Debian、CentOS、Red Hat Enterprise Linux(RHEL)、Fedora 等。
  • Windows:MongoDB 提供了适用于 Windows 操作系统的官方版本,可以在 Windows Server 和 Windows 桌面操作系统上运行。
  • macOS:MongoDB 可以在 macOS 上运行,并且提供了适用于 macOS 的官方安装程序。
  • Docker:MongoDB 也可以作为 Docker 容器运行,这使得在各种平台上部署和管理 MongoDB 变得更加便捷。


语言支持

MongoDB 有官方的驱动如下:


MongoDB 工具

有几种可用于MongoDB的管理工具。

监控

MongoDB提供了网络和系统监控工具Munin,它作为一个插件应用于MongoDB中。

Gangila是MongoDB高性能的系统监视的工具,它作为一个插件应用于MongoDB中。

基于图形界面的开源工具 Cacti, 用于查看CPU负载, 网络带宽利用率,它也提供了一个应用于监控 MongoDB 的插件。

GUI

  • Fang of Mongo – 网页式,由Django和jQuery所构成。
  • Futon4Mongo – 一个CouchDB Futon web的mongodb山寨版。
  • Mongo3 – Ruby写成。
  • MongoHub – 适用于OSX的应用程序。
  • Opricot – 一个基于浏览器的MongoDB控制台, 由PHP撰写而成。
  • Database Master — Windows的mongodb管理工具
  • RockMongo — 最好的PHP语言的MongoDB管理工具,轻量级, 支持多国语言.

MongoDB 应用案例

下面列举一些公司MongoDB的实际应用:

  • Craiglist上使用MongoDB的存档数十亿条记录。
  • FourSquare,基于位置的社交网站,在Amazon EC2的服务器上使用MongoDB分享数据。
  • Shutterfly,以互联网为基础的社会和个人出版服务,使用MongoDB的各种持久性数据存储的要求。
  • bit.ly, 一个基于Web的网址缩短服务,使用MongoDB的存储自己的数据。
  • spike.com,一个MTV网络的联营公司, spike.com使用MongoDB的。
  • Intuit公司,一个为小企业和个人的软件和服务提供商,为小型企业使用MongoDB的跟踪用户的数据。
  • sourceforge.net,资源网站查找,创建和发布开源软件免费,使用MongoDB的后端存储。
  • etsy.com ,一个购买和出售手工制作物品网站,使用MongoDB。
  • 纽约时报,领先的在线新闻门户网站之一,使用MongoDB。
  • CERN,著名的粒子物理研究所,欧洲核子研究中心大型强子对撞机的数据使用MongoDB。
目录
相关文章
|
自然语言处理 搜索推荐 开发者
SmartArXiv——基于OpenSearch LLM智能问答版构建的智能学术论文助手正式发布
本文介绍智能学术论文助手SmartArxiv的架构、应用场景和产品功能。
2337 1
|
10月前
|
JSON 人工智能 自然语言处理
剖析大模型连“Strawberry”的“r”都数不对的原因
本文将从两个常见的大模型翻车问题入手解析这些问题背后体现的大模型技术原理,并解释了为什么会导致这些问题,接着我们利用CoT(思维链)方法解决这些问题并基于上述原理试图剖析CoT方法起作用的可能原因,最后提出【理由先行】风格这一简单有效的Prompt Trick。
1375 36
|
分布式计算 DataWorks API
一分钟“零代码”生成API,DataWorks数据服务快速上手指南
DataWorks数据服务提供了快速生成API的能力,可以一分钟“零代码”生成API,本文是一篇快速上手指南,帮助你快速认识数据服务。
12309 0
|
11月前
IDEA创建项目失败提示 Failed to create directory 或 “项目初始化失败”
文章解释了IDEA创建项目失败提示“Failed to create directory”或“项目初始化失败”的原因通常是由于IDEA对目标文件夹没有操作权限,并建议更换一个有权限的文件夹来创建项目。
1279 2
IDEA创建项目失败提示 Failed to create directory 或 “项目初始化失败”
|
10月前
|
数据挖掘 数据处理 Python
Pandas去掉所有的百分号并转换成小数
在数据处理中,特别是在财务和统计分析中,经常会遇到带有百分号的数据。为了进行准确的计算,需要将这些百分比数据转换为小数形式。本文介绍了如何在Pandas DataFrame中快速去除所有百分号,并将这些值转换为小数,以便进行进一步的数值计算和分析。
460 2
|
11月前
|
Linux 开发工具
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
【Linux快速入门(二)】Linux与ROS学习之编译基础(make编译)
351 0
|
11月前
|
Kubernetes Cloud Native Serverless
批处理系统:Batch批量计算与云原生Serverless Argo Workflows
本文对比了Batch批量计算与Serverless Argo Workflows在容器化批处理任务中的应用,分析了两者在任务定义、依赖关系、规模并发、高级编排、可移植性等方面的异同,帮助技术决策者根据自身需求选择合适的平台。
|
10月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
1744 1
无影云电脑免安装黑神话悟空-直面天命
无影云电脑现已预装《黑神话:悟空》免去漫长下载等待,让您即刻享受游戏乐趣。
|
SQL JavaScript 关系型数据库
号称下一代Node.js,Typescript以及go的orm的prisma 浅谈如何在nest.js中使用
号称下一代Node.js,Typescript以及go的orm的prisma 浅谈如何在nest.js中使用
号称下一代Node.js,Typescript以及go的orm的prisma 浅谈如何在nest.js中使用