当前位置: 首页 > news >正文

MongoDB知识点

1、什么是MongoDB

MongoDB是一种非关系型数据库,被广泛用于大型数据存储和分布式系统的构建。MongoDB支持的数据模型比传统的关系型数据库更加灵活,支持动态查询和索引,也支持BSON格式的数据存储,这种格式可以支持读取和写入大量的数据。

2、MongoDB的优势是什么?

MongoDB的主要优势包括:

  • 灵活的数据模型:MongoDB支持动态查询和索引,可以支持更大的数据集。
  • 分布式扩展:MongoDB可以轻松地横向扩展,支持跨多个服务器分布数据,实现高可用性和负载均衡。
  • 大规模数据存储:MongoDB支持海量数据存储,提供非常高的性能和可扩展性。
  • 易于使用:MongoDB提供简单的命令行工具和可视化界面,支持多种编程语言,易于使用和自定义。

3、MongoDB的工作原理是什么?

MongoDB基于JSON格式存储数据,并使用BSON格式处理数据。它支持多个数据节点的分布式存储,每个数据节点都可以独立扩展。MongoDB可以自动化控制数据的复制和故障转移。需要注意的是,MongoDB不支持跨节点的事务。

4、MongoDB的数据存储格式是什么?

MongoDB将数据存储为对应的BSON格式文件,这个文件是二进制的,可以通过MongoDB提供的命令行工具进行读取和写入。BSON是Binary JSON的缩写,是JSON的一种扩展,能够更快地将数据存储和读取到MongoDB数据库中。

5、什么是MongoDB索引?

MongoDB索引是为一个或者多个文档字段创建的数据结构,能够帮助MongoDB更加快速地执行查询操作。索引可以被定义为唯一的,如果这样定义,MongoDB将确保所有的值都不同。MongoDB支持单边和多边索引,可以深度嵌套和数组字段的嵌套索引。

使用db.collection.createIndex()在集合中创建一个索引

6、如何优化MongoDB的查询性能?

  • 为查询字段创建索引:在查询频繁的字段上创建索引,能够提高查询速度。
  • 限制查询结果的数量:可以使用skip()和limit()方法分页,减少查询结果大小。
  • 只查询需要的字段:使用projection或者特定字段查询的方式,避免查询所有字段,减少网络传输带宽。
  • 使用聚合查询:使用聚合查询代替多个单独的查询语句,可以提高性能。
  • 为数据结构优化设计:为了优化结构设计,尽可能减少重复的数据。

7、MongoDB的复制如何工作

MongoDB的复制工作是基于主从复制实现的。其中一个节点被定义为主节点,使用replica set的方式,其他的节点被定义为备份节点,数据会进行实时同步。在某些情况下,主节点可能会失效或消失,这时候从节点将被提升为主节点继续工作。

8、MongoDB的副本集是什么?

MongoDB的复制工作是基于主从复制实现的。其中一个节点被定义为主节点,使用replica set的方式,其他的节点被定义为备份节点,数据会进行实时同步。在某些情况下,主节点可能会失效或消失,这时候从节点将被提升为主节点继续工作。

9、如何区分MongoDB和关系性数据库?

  • 数据结构不同:MongoDB使用文档形式存储数据,而关系型数据库使用表这种结构体来存储数据。
  • 索引不同:MongoDB支持的索引比关系型数据库更加灵活。
  • 分布式和可扩展性强:MongoDB具有高度的可扩展性和分布式数据库的特性,能够支持海量数据存储。而关系型数据库的可扩展性较差,虽然引入到分布式系统,但是需要较多的数据库连接和配置。

10、MongoDB成为最好NoSQL数据库的原因是什么?

  • 面向文件的
  • 高性能
  • 高可用性
  • 易扩展性
  • 丰富的查询语言

11、在哪些场景使用MongoDB?

  • 大数据
  • 内容管理系统
  • 移动端Apps
  • 数据管理

12、MongoDB支持哪些数据类型

  • String
  • Integer
  • Double
  • Boolean
  • Object
  • Object ID
  • Arrays
  • Min/Max Keys
  • Datetime
  • Code
  • Regular Expression等

13、如何查询集合中的文档

db.collectionName.find({key:value})

14、用什么方法可以格式化输出结果

db.collectionName.find().pretty()

15、更新数据

db.collectionName.update({key:value},{$set:{newkey:newValue}})

16、如何删除文档

db.collectionName.remove({key:value})

17、在MongoDB中如何排序

并使用 1 和 -1 来指定排序方式,其中 1 表示升序,而 -1 表示降序。

db.connectionName.find({key:value}).sort({columnName:1})

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

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

19、索引类型有哪些

  • 单字段索引(Single Field Indexes)
  • 复合索引(Compound Indexes)
  • 多键索引(Multikey Indexes)
  • 全文索引(text Indexes)
  • Hash 索引(Hash Indexes)
  • 通配符索引(Wildcard Index)
  • 2dsphere索引(2dsphere Indexes)

20、复制集节点类型有哪些

  • 优先级0型(Priority 0)节点
  • 隐藏型(Hidden)节点
  • 延迟型(Delayed)节点
  • 投票型(Vote)节点以及不可投票节点

21、更新操作立刻fsync到磁盘?

不会,磁盘写操作默认是延迟执行的。写操作可能在两三秒(默认在60秒内)后到达磁盘。例如,如果一秒内数据库收到一千个对一个对象递增的操作,仅刷新磁盘一次。

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

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

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

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

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

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

25、数据在什么时候才会扩展到多个分片(shard)里?

MongoDB 分片是基于区域(range)的。所以一个集合(collection)中的所有的对象都被存放到一个块(chunk)中。只有当存在多余一个块的时候,才会有多个分片获取数据的选项。现在,每个默认块的大小是 64Mb,所以你需要至少 64 Mb 空间才可以实施一个迁移。

26. 什么是master或primary?

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

27. 什么是secondary或slave?

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

28. 你怎么比较MongoDB、CouchDB及CouchBase?

MongoDB和CouchDB都是面向文档的数据库。MongoDB和CouchDB都是开源NoSQL数据库的最典型代表。 除了都以文档形式存储外它们没有其他的共同点。MongoDB和CouchDB在数据模型实现、接口、对象存储以及复制方法等方面有很多不同。

29、可以把movechunk目录里的旧文件删除吗?

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

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

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

http://www.jsqmd.com/news/478877/

相关文章:

  • 金融AI营销如何选型?原圈科技揭秘4大标准避坑指南
  • 2026年AI搜索生态爆发,用触有数据抢占六大平台可见率!
  • LangChain到底是啥?用大白话讲清楚
  • 将线程和锁构建图(后续通过检测环路以检测死锁)
  • 学长亲荐 9个降AI率软件降AIGC网站:本科生降AI率全测评与推荐
  • 2026年呼和浩特靠谱瓷砖大揭秘!哪种款式数量多你知道吗?
  • 哇塞!深圳市访客云产品1秒完成人证合一验证,你还不心动?
  • 拒绝纸上谈兵!破碎机振动治理,实测有效的定制化方案
  • 某端游外挂网络验证的分析与破解思路
  • 使用实时云渲染LarkXR顺利搭建云VR方案
  • Matlab中的一维无限能量艾里光束与一维有限能量艾里光束
  • 农经权二轮延包—带确认签字表的公示图
  • 方盾在口,安全在手:煤矿半面罩的职业健康使命
  • 轮毂电机分布式驱动车辆状态估计:EKF 与 UKF 的探索
  • 【Makefile 专家之路 | 基础篇】01. 万物起源:编译链接原理与 Makefile 的核心价值
  • Qt窗口模态设置
  • 别再拿AI生成“废片”了!Claude突发免费杀手锏,用动态白板降维打击传统图文交互
  • 讯维 AI 分布式可视化系统支持哪些 AI 智能应用,实际应用价值如何?
  • 老司机教你玩转智能避撞:从五次多项式到模型预测控制的那些事儿
  • 2026-03-14
  • YOLOv10全网首发:AAAI2026 | 融合PartialNet Block的C3k2-YOLO高效目标检测网络 | 轻量化涨点设计
  • 2026年好用的北京GEO优化公司排名出炉,哪家会是你的心头好?
  • 联合省选 2026
  • sdut-程序设计基础Ⅰ-实验四for循环(11-22)
  • 使用Conda和pip创建Python环境
  • 蓝牙连接不上的解决方法
  • 淘宝系逆向@阿里巴巴商家版-转人工逆向
  • 迁移学习中的负迁移风险:成因、检测与规避方案
  • 国家网络与信息安全信息通报中心通报OpenClaw安全风险预警
  • 三部六层电梯仿真群控联动系统:基于西门子S7-1200 PLC与博图v15.1及以上版本实现方...