MongoDB 的简介、特点以及详解

什么是 MongoDB?它的主要特点有哪些? MongoDB作为主流NoSQL数据库,采用文档型数据模型(BSON格式),支持灵活的无模式结构和复杂数据类型嵌套。其核心优势在于水平扩展能力,通过分片技术实现分布式存储,并利用复制集保障高可用性。技术特性包括丰富查询语法、多样索引机制和4.0版本后支持的ACID事务。典型应用场景包括内容管理、IoT数据处理等非结构化场景,但不适合需要复杂关联查询或强事务的系统。相较于关系型数据库,MongoDB在 schema灵活性、扩展性和特定查询性能方面更具优势,但在事务完整性和关联操作上存在局限。 阅读详情
1、概念

MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统,也是NoSql数据库的一种。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
在这里插入图片描述

2、特点
  • MongoDB 是一个面向文档存储的数据库,操作起来比较简单和容易
  • Mongo 支持丰富的查询表达式。查询指令使用 JSON 形式的标记,可轻易查询文档中内嵌的对象及数组
  • 可以在 MongoDB 记录中设置任何属性的索引 (如:FirstName=“Sameer”,Address=“8 Gandhi Road”)来实现更快的排序
  • 可以通过本地或者网络创建数据镜像,使得 MongoDB 有更强的扩展性
  • 如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片
  • MongoDb 使用 update()命令可以实现替换完成的文档(数据)或者一些指定的数据字段
  • Mongodb 中的 Map/reduce 主要是用来对数据进行批量处理和聚合操作
  • Map 和 Reduce。Map 函数调用 emit(key,value)遍历集合中所有的记录,将 key 与 value 传 给 Reduce 函数进行处理
  • Map 函数和 Reduce 函数是使用 Javascript 编写的,并可以通过 db.runCommand 或 mapreduce 命令来执行 MapReduce 操作
  • GridFS 是 MongoDB 中的一个内置功能,可以用于存放大量小文件
  • MongoDB 允许在服务端执行脚本,可以用 Javascript 编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可
3、我怎么查看 MongoDB 正在使用的链接?

      db._adminCommand(“connPoolStats”);

4、MongoDB 支持存储过程吗?如果支持的话,怎么用?

      MongoDB 支持存储过程,它是 javascript 写的,保存在 db.system.js 表中。

5、如何理解 MongoDB 中的 GridFS 机制,MongoDB 为何使用 GridFS 来存储文件?

      GridFS 是一种将大型文件存储在 MongoDB 中的文件规范。使用 GridFS 可以将大文件分隔成多个小文档存放,这样我们能够有效的保存大文档,而且解决了 BSON 对象有限制的问题。

6、MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引吗?

      不会,只会在 A:{B,C}上使用索引。

7、如果一个分片(Shard)停止或很慢的时候,发起一个查询会怎样?

      如果一个分片停止了,除非查询设置了“Partial”选项,否则查询会返回一个错误。如果一个分片响应很慢,MongoDB 会等待它的响应。

8、当更新一个正在被迁移的块(Chunk)上的文档时会发生什么?

      更新操作会立即发生在旧的块(Chunk)上,然后更改才会在所有权转移前复制到新的分片上。

9、如果块移动操作(moveChunk)失败了,我需要手动清除部分转移的文档吗?

      不需要,移动操作是一致(consistent)并且是确定性的(deterministic);一次失败后,移动操作会不断重试;当完成后,数据只会出现在新的分片里(shard)

10、可以把 moveChunk 目录里的旧文件删除吗?

      没问题,这些文件是在分片(shard)进行均衡操作(balancing)的时候产生的临时文件。一旦这些操作已经完成,相关的临时文件也应该被删除掉。但目前清理工作是需要手动的,所以请小心地考虑再释放这些文件的空间。

11、什么是 master 或 primary?

      它是当前备份集群(replica set)中负责处理所有写入操作的主要节点/成员。在一个备份集群中,当失效备援(failover)事件发生时,一个另外的成员会变成 primary。

12、 什么是 secondary 或 slave?

      Seconday 从当前的 primary 上复制相应的操作。它是通过跟踪复制 oplog(local.oplog.rs)做到的。

13、我必须调用 getLastError 来确保写操作生效了么?

      不用。不管你有没有调用 getLastError(又叫"Safe Mode")服务器做的操作都一样。调用 getLastError 只是为了确认写操作成功提交了。当然,你经常想得到确认,但是写操作的安全性和是否生效不是由这个决定的。

14、应该启动一个集群分片(sharded)还是一个非集群分片的 MongoDB 环境?

      为开发便捷起见,我们建议以非集群分片(unsharded)方式开始一个 MongoDB 环境,除非一台服务器不足以存放你的初始数据集。从非集群分片升级到集群分片(sharding)是无缝的,所以在你的数据集还不是很大的时候没必要考虑集群分片(sharding)。

15、分片(sharding)和复制(replication)是怎样工作的?

      每一个分片(shard)是一个分区数据的逻辑集合。分片可能由单一服务器或者集群组成,我们推荐为每一个分片(shard)使用集群。

16、 分析器在 MongoDB 中的作用是什么?

      MongoDB 中包括了一个可以显示数据库中每个操作性能特点的数据库分析器。通过这个分析器你可以找到比预期慢的查询(或写操作);利用这一信息,比如,可以确定是否需要添加索引。

17、名字空间(namespace)是什么?

      MongoDB 存储 BSON 对象在丛集(collection)中。数据库名字和丛集名字以句点连结起来叫做名字空间(namespace)。

18、如果用户移除对象的属性,该属性是否从存储层中删除?

      是的,用户移除属性然后对象会重新保存(re-save())。

19、MongoDB中,允许空值 null 吗?

      对于对象成员而言,是的。然而用户不能够添加空值(null)到数据库丛集(collection)因为空值不是对象。然而用户能够添加空对象{}。

20、MongoDB中,如何执行事务/加锁?

      MongoDB 没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。可以把它类比成 MySQL MylSAM 的自动提交模式。通过精简对事务的支持,性能得到了提升,特别是在一个可能会穿过多个服务器的系统里。

MongoDB特性 本文主要参考《MongoDB 实战》第二版 1.文档数据模型 MongoDB以二进制JSON格式存储文档数据,或者叫做BSON。BSON有相似的数据结构,它是专门为文档存储设计。当查询MongoDB并返回结果时,这些数据就会转换为易于阅读的数据格式。 关系型数据库包含表,MongoDB拥有集合。即关系型数据库在表的行里保存数据,而MongoDB在集合的文档里保存数据。集合是M... 阅读详情

相关推荐

mongodb的优缺点及应用场景 | Spring Boot 32

一、MongoDB是什么 1、维基百科 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索

学Java,找哪吒 1万+

MongoDB 使用教程--基本增删改查语法

MongoDB文档的数据结构和JSON基本一样。 切换数据库,此处使用NoSQL Manager for MongoDB工具作为客户端,  命令 user test 查看所有数据库   show dbs 切换到数据库 runoob: use runoob 执行删除命令: db.dropDatabase() 删除集合 db.colle

IT少年 4万+

K8s入门教程(一)

本教程提供了Kubernetes(K8s)的入门指南,涵盖了从基础概念到实战操作的全面内容。首先介绍了Kubernetes的定义和核心功能,如自动化部署、弹性伸缩、自我修复等。接着,详细讲解了如何在macOS上安装Minikube和kubectl工具,以及如何使用这些工具创建和管理Pod、Deployment和Service等核心资源。教程还包括了实战案例,如部署Nginx应用,并介绍了高级特性如滚动更新和自动伸缩。最后,提供了常见问题的解决方案,帮助用户快速上手和解决实际使用中的问题。

2401_82505179的博客 1689

MongoDB详解,用心看这篇就够了【重点】

1.1 MongoDB概述 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 Mo

ᶻᶻᶻ 枕星河的博客 9万+

保姆级教程:用中移ML307模组对接高德/OneOS定位服务,从配置apikey到解析+MLBSLOC状态码

本文详细介绍了如何使用中移ML307系列模组对接高德/OneOS定位服务,从配置apikey到解析+MLBSLOC状态码的全过程。涵盖高德定位服务和OneOS定位服务的配置步骤、常见错误处理及性能优化技巧,帮助开发者快速实现基站定位功能,提升物联网项目的定位精度和稳定性。

weixin_30632089的博客 507

LED灯闪烁实验:代码集成

LED灯闪烁实验已经全部完成,在该实验中使用了较多的工具链,涉及底层软件、建模、软件编译等。首先,通过STM32CubeMX工具进行STM32底层软件配置,可以大大减少手写代码的工作量。另外由于做了可视化,也降低了STM32的上手难度,提升效率。利用Simulink建模,可以在PC环境下验证应用层算法的正确性而不依赖于具体控制器,实现应用层算法和底层软件、控制器硬件的解耦。另外,图形化的建模方式也更加有利于开发者思考与分析,大量的封装库文件也可以降低开发的工作量。

u013288925的博客 369

MongoDB简介及其主要特点

MongoDB简单介绍及其主要特点

Developer_data的博客 2702

YOLOv11来了,使用YOLOv11训练自己的数据集和推理(附YOLOv11网络结构图)

YOLOv11 由 Ultralytics 在 2024 年 9 月 30 日发布, 最新的 YOLOv11 模型在之前的 YOLO 版本引入了新功能和改进,以进一步提高性能和灵活性。YOLO11 在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 28万+

MongoDB 简介、特点、安装、核心概念

官方MongoDB是一个文档数据库,旨在方便应用开发和扩展。百度百科MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,

qq_50313418的博客 621

PyQt 随笔:信号与槽的两种使用方法:@pyqtSlot 和 connect

在 PyQt 中,信号与槽是实现事件驱动的一种重要机制。通过信号与槽的连接,可以实现对象之间的通信,例如在用户界面中响应按钮点击事件或者数据的变化等。PyQt 提供了两种主要的方法来创建信号与槽的连接:@pyqtSlot 装饰器和 connect 方法。本文将详细介绍这两种方法,并提供相应的源代码示例。在上面的示例中,我们定义了一个名为。

QasdCpp的博客 763

sim800c插卡后指示灯还是一秒一闪无法接收发送短信,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1168

MongoDB的设计特点简介

MongoDB是一个高性能、开源、无模式的文档型数据库,设计用于提供高性能、水平可扩性、高可用性和高级可查询性,为Web应用提供可扩展的高性能数据存储解决方案。MongoDB的名称取自单词”humogous”中间的几个字符,是很大、巨大的意思。该数据库由10gen公司开发并提供技术支持,它属于NoSQL数据库家族中的一员,在许多场景下可以用来替代传统光系型数据库或key/value存储方式。

sanqima的专栏 1761

SAP 清账凭证 完整生成逻辑(超详细原理 + 底层规则 + 分录逻辑 + 互清特殊规则)

【SAP清账凭证核心逻辑摘要】(149字) SAP清账凭证生成遵循两大类型:1)资金往来对冲型(如F-32/F-44互清),强制生成含完整借贷分录的独立凭证,通过AUGDT/AUGBL字段绑定未清项,典型场景如应收冲应付(借:应付账款 贷:应收账款);2)纯核销型(如F.13自动清账),仅标记行项目状态不产生实际分录。关键规则:①仅未清项管理科目可清账;②互清必须配置主数据关联;③差额清账自动补差(折扣/汇差);④原始凭证永不修改,仅更新BSIK/BSAD等表状态。清账凭证均保留可追溯性,支持FBRA重置还

金牌架构师 542

MongoDB简介、特点、原理、使用场景、应用案例

https://blog.youkuaiyun.com/tanqian351/article/details/81744970 简介 MongoDB[1] 是一个基于分布式文件存储的数据库。由C 语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB[2] 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常...

qq_36733838的博客 912

inno setup自定义卸载程序和美化

也就是DisplayName,因为我们在第一步的时候,将卸载程序名称也写入了注册表,所以,我们直接从注册表读DisplayName字段即可。1.要实现inno setup自定义卸载程序,首先需要关闭自带的卸载程序。在[Setup]的字段关闭卸载程序步骤和页面。2.删除应用程序目录里能够删除的并且返回进度。3.自定义卸载程序相关的注册表信息。4.删除启动菜单栏和guid注册表。2.自定义快捷方式和程序菜单。

cs821984831的博客 2348

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NoSQL 简介,MongoDB 数据库特点、配置、基本命令

NoSQL简介,MongoDB数据库简介、配置及命令使用

酱汁儿 376

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MongoDB简介&体系结构&数据模型&特点

MongoDB是一个开源、高性能、五模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。MongoDB是最像关系型数据库(MySQL)的非关系型数据库。它支持的数据结构非常松散,是一种类似于JSON的格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。MongoDB中记录的是一个文档,它是一个由字段(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。

田螺姑娘的博客 1269

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

系列一、MongoDB简介&特点&应用场景

MongoDB 是一个非关系型文档数据库。

仰望星空,脚踏实地!安全感是自己给的,努力才是一辈子的安全感。 1878

# MongoDB 快速上手- 理解MongoDB的业务场景、熟悉MongoDB的简介、特点和体系结构、数据类型等。-能够在Windows和Linux下安装等等

MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。它支持的数据结构非常松散,是一种类似于 JSON 的 格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。

weixin_64928557的博客 271

MongoDB【使用场景&简介&体系结构&数据模型&特点】

MongoDB(应用场景,简介,体系结构,数据模型,特点)

日常学习总结 1235

MongoDB简介及使用

MongoDB简介1、NoSQL简介2、什么是MongoDB ?3、MongoDB 特点4、使用docker安装mongodb5、MongoDB 概念解析及常用命令5.1、 数据库操作命令5.2、文档5.3、 集合(相当于mysql中的表)5.4、 MongoDB 数据类型5.6、MongoDB适用场景5.7、MongoDB不适用场合6、MongoDB常用操作6.1、 INSERT6.2、 Query6.3、 Update6.4、 Remove6.5 aggregate6.5.1、插入数据6.5.2 统计s

qq_46112274的博客 6709

MongoDB 简介和安装

mongodb 简介和安装

快乐的小三菊的博客 636

【MongoDB】初识、安装MongoDB

MongoDB是一个开源的、高性能、无模式的文档数据库,设计初就是为了简化开发与方便扩展,他是最想关系型数据库的非关系型数据库。它支持的数据结构相对松散,是一种类似JSON格式的BSON,它既可以存储相对复杂的数据,也相当灵活。MongoDB中记录的文档,他是一个由字段与值对组成的数据结构。支持的BSON数据类型。

qq_61903414的博客 1027

《MongoDB高手课》学习记录(第一天)

写在前面 缘起 MongoDB了解的很早,但一直没用下定决心学习一下,之前买过一本书,竟然最后送人了,打脸啊:(。这次参加了一个极客时间的21天打卡活动,算是对自己的鞭策吧。立Flag的时候,选来选去,最后决定学学MongoDB吧。当然,这个就是学习记录,文字写的不一定有营养。 要学的课程 要学习的课程是的《MongoDB高手课》,课程地址是https://time.geekbang.o...

weixin_36984106的博客 889
上一篇: Java8中使用groupBy实现集合的分组,并根据某一条件进行分组
下一篇: Spring Boot面试专题整理及其详解
Monika、
博客等级 码龄7年 16粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monika、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值