文章图片
关系型数据库管理系统 | MongoDB |
表 | 集合 |
行 | 文档 |
列 | 属性 |
表连接 | 嵌入文件 |
- 跨平台
- 用 C++ 编写。
- 安全且可扩展
- 无模式数据库
- 面向文档
- 支持高可用性和冗余
问题:Mongo shell 是什么?MongoDB面试题解析: Mongo shell 是 MongoDB 的 JavaScript 接口,可用于查询和更新数据。它是交互式的,也可用于执行管理操作。
问题:MongoDB如何存储数据?答:基于文档,MongoDB 以 BSON 或二进制 JavaScript 对象表示法存储文档,这是 JSON 的二进制编码格式。
问题:MongoDB 是什么类型的 NoSQL 数据库?答:它是一个文档数据库,包含具有键值对、键数组对和嵌套文档的文档。
问题:MongoDB常见面试题有哪些 - 列出MongoDB的重要特性。答: MongoDB 的重要特性是——
- 它是一个无模式的数据库
- 没有复杂的连接
- 由于工作集(内部存储器)的存在,可以更快地访问数据
- 聚合、分片和复制等功能使其易于使用。
- 跨平台和基于文档
- 自动故障转移和高可用性
- 相关数据可以嵌入到单个文档结构中(Embedded data model)
- 通过从一个文档到另一个文档的引用,存储数据之间的关系(规范化数据模型)
问题:MongoDB 中的命名空间是什么?答:命名空间是数据库名称和集合名称的串联。示例——students.the subject,其中students 是数据库,而subject 是集合。
问题:在MongoDB中如何进行CRUD操作?回答:
- C – 创建 – db.collection.insert();
- R - 读取 - db.collection.find();
- U - 更新 - db.collection.update();
- D – 删除 – db.collection.remove({“fieldname”: “value”});
MySQL | MongoDB |
用 C 和 C++ 编写 | 用 C++ 和 JavaScript 编写 |
遵循 RDBMS 数据库结构 | 基于文档的结构 |
垂直缩放 | 水平缩放 |
严格定义的数据结构,模式是严格的,应该在开始时定义。 | 复杂文档的动态和灵活模式创建。 |
使用结构化查询语言 | 使用非结构化查询语言。 |
使用 Join 链接来自两个或多个表的数据 | JOIN 没有等价物。 |
具有非结构化数据的大型数据库的性能很慢。 | 有效处理大型非结构化数据,从而提供良好的性能。 |
不太适合基于云的环境 | 基于云的服务的最佳选择。 |
问题:什么是ObjectId?它的结构如何?【MongoDB常见面试题有哪些(答案和解析指南)】答: ObjectId 是一个类,它是 MongoDB 中文档的默认主键。它位于插入文档的 _id 字段中。它是使用默认算法生成的 12 字节 BSON 类型。结构是——
- 一个 4 字节的值,表示自 Unix 纪元以来的秒数
- 3 字节机器 ID
- 2 字节进程 ID
- 以随机数开头的 3 字节计数器
问题:MongoDB 是如何做索引的?答:索引是使用 ensureIndex() 方法完成的。句法 -
db.COLLECTION_NAME.ensureIndex()
问题:命名为新集合创建的默认索引。答:为新集合创建的默认索引是 _id
问题:MongoDB 中的分片是什么?答: MongoDB 使用 Sharding 来满足数据增长,这意味着在不同的机器上对数据记录进行排序。每个分片都是一个副本集。
问题:什么是涵盖查询,为什么它很重要?答:在覆盖查询中,查询中使用的所有字段都创建了索引。返回的结果也应该是索引的一部分。因此,MongoDB 无需实际查看内部文档即可获取结果,从而节省时间并提高效率。
问题:什么是复制,什么是主副本集和辅助副本集?答:复制意味着跨多台服务器同步数据。它增加了数据的可用性。如果单个服务器丢失,其他服务器中的数据仍然完好无损。
- 主副本集 - MongoDB 仅将数据写入主副本集或主副本集。
- 次要副本集——次要或从节点只能接受读取。他们从主复制。
问题:如何在 MongoDB 中创建和删除集合?回答:
- 创建集合 - db.createCollection();
- 删除集合 – db.collection.drop();
文章图片
问题:如何在MongoDB中存储图片、视频等大文件?答:大文件使用 GridFS 规范存储在 MongoDB 中。
问题:比较 CouchDB 和 MongoDB。回答:
CouchDB | MongoDB |
数据模型是面向文档的,即 JSON | 使用 BSON,它是 JSON 的扩展 |
使用 HTTP/REST 进行查询 | 使用 TCP/IP 上的标准协议 |
数据库有文件 | 数据库包含集合,集合包含文档 |
用 Erlang 写的 | 用 C++ 编写 |
使用范围查询和 map/reduce | 使用基于对象的查询语言和 map/reduce |
问题:MongoDB 中有哪些不同的索引类型?回答:
- 默认 - 这是 MongoDB 创建的 _id
- 单字段 - 用于对单个字段进行索引和排序
- 复合 – 适用于多个领域
- 多键——用于索引数组数据
- Hashed – 索引字段值的哈希值
- 地理空间 – 查询地理空间(位置)数据
问题:解释分析器在 MongoDB 中的作用。答:探查器是一种内置工具,可以找出缓慢且资源密集型的查询,并提供查询级别的见解。作为 dba,你可以分析查询。Profiler 将所有数据存储在 system.profile 集合中。
问题:MongoDB 如何处理事务和锁?MongoDB面试题解析: MongoDB 使用多粒度锁定,其中可以在全局、数据库或集合级别锁定操作。由存储引擎来实现并发级别。例如,在 WiredTiger 中,它是文档级别的。对于读,有一种共享锁定模式,而对于写,有一种独占锁定模式。
问题:列出集合中所有索引的命令是什么?答:命令是db.collection.getIndexes();
问题:MongoDB 是如何做文本搜索的?答:可以使用文本索引进行文本搜索。例子 -
db.collection_name.ensureIndex();
问题:将更新写入磁盘的默认间隔是多少?答:默认间隔为 60 秒。
问题:解释 MongoDB 中的聚合。答:MongoDB常见面试题合集 - 聚合对来自不同文档的值进行分组并对数据执行操作以返回单个结果。MongoDB 执行聚合的方式有 3 种:
- 聚合管道
- Map-reduce 功能
- 单一目的聚合方法
db.COLLECTION_NAME.find({},);
limit() – 限制函数限制获取的记录数。例如,如果你有 7 个文档,但只想显示集合中的前 4 个文档,请使用 limit。句法 -
db.COLLECTION_NAME.find().limit(NUMBER);
问题:并发如何影响主副本集?
答:当集合更改写入主数据库时,MongoDB 会将相同的内容写入本地数据库中的一个特殊集合,称为主数据库的 oplog。因此,集合的数据库和本地数据库都被锁定。
问题:举一个MongoDB中插入、删除和更新语句的例子。
插入 | db.books.insert({ _id: ObjectId(7df74fd8902c), title: 'All about MongoDB', description: 'Everything you need to know about MongoDB', by: 'Author1', url: 'http://www.blogsuthor1.com' }) |
删除 | 删除特定文件 -db.books。db.books.remove({'title':'All about MongoDB'}) 删除所有文件 - db.books.remove();
|
更新 | 要更新现有文档的值 - db.books.update({'title':'All about MongoDB'},{$set:{'title':'MongoDB for dummies'}}) 使用基于 ObjectId的新文档替换现有文档- db.books.save( { "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB for dummies", "by":"Author2" } ) |
问题:解释一下 Mongo-DB 中 map-reduce 命令的用途。答: Map-reduce 是一种执行聚合的方法。
- Map 函数发出指定的键值对。
- Reduce 函数组合键值对并返回聚合结果。
db.collection.mapReduce(
function() {emit(key,value);
},
function(key, values) {return aggregatedResult}, { out: collection }
<
/pre.
)
问题:列出MongoDB支持的一些数据类型。答:一些数据类型是数字、字符串、数组、二进制数据、布尔值、日期、正则表达式、ObjectId 等……
问题:应用程序如何访问 MongoDB 中的实时数据变化?答:应用程序可以使用 Change 流访问实时数据更改,它充当所有集合操作(??如插入、删除和更新)的订阅者。
问题:创建数据备份和恢复数据的命令是什么?答:使用命令 mongodump 创建备份。
使用命令 mongorestore [backup_path] 恢复数据。
问题:解释一下 MongoDB 和 Cassandra 的区别?回答:
参数 | MongoDB | Cassandra |
数据结构 | 当没有清晰的数据结构时使用的最佳数据库,即数据是结构化和非结构化的混合。 | 适用于非结构化和结构化数据,尤其是当数据库预计会动态增长时。 |
数据模型 | 拥有丰富且富有表现力的数据模型,是面向数据的。任何数据结构都可以轻松表示。 | 具有表中行和列的传统模型。每列都是特定类型的,这使结构井井有条。 |
主节点数 | 集群中只有一个master节点,控制着很多slave节点。 | 集群中有很多master节点。 |
二级索引 | 索引任何属性都很容易,因为二级索引是一流的构造。 | 二级索引仅限于单列,灵活性较差。 |
可扩展性 | 写入从节点的数据,必须经过单个主节点,所以扩展性较差。 | 由于有许多主节点,因此数据存在于多个节点中。因此,可扩展性高。 |
聚合框架 | 内置聚合框架。 | 没有内置的聚合框架。 |
问题:MongoDB 中的索引是什么?答:在 MongoDB 中,索引有助于高效地执行查询。索引是特殊的数据结构,以易于遍历的形式存储部分集合。默认情况下,MongoDB 在创建集合时在 _id 字段上创建永久唯一索引。它可以防止数据库中的重复文档。
问题:MongoDB 中的存储引擎是什么?答:它是数据库的一个组件,用于管理数据在内存和磁盘中的存储方式。MongoDB 提供对多个存储引擎的支持,有助于为不同的工作负载提供更好的性能。默认的存储引擎是 WiredTiger (MongoDB3.2),它非常适合大多数工作负载。
问题:解释一下MongoDB中Journaling工作的工作机制?答:日志用于在MongoDB意外退出时在最后一个检查点之后恢复信息。存储引擎 (WiredTiger) 为启动写入操作的每个客户端创建日志记录。如果有更新,单个日志记录记录更新操作以及索引修改。日志记录使用内存缓冲存储。日志文件存储在 MongoDB 创建的“journal”目录下。阅读更多详情。
问:是否可以为 MMAPv1 配置缓存大小?答:无法为 MMAPv1 配置缓存大小。MongoDB 通过内存映射文件自动使用所有空闲内存。
问题:解释MongoDB中的GridFS?答: GridFS 存储和检索大文件,如图像、音频和视频文件等。虽然存储文件的限制是 16MB,但 GridFS 可以存储更大的文件。GridFS 将文件分成块并将每个块存储为最大大小为 255k 的不同文档。它使用两个集合 fs.chunks 和 fs.files 分别存储块和元数据。
问题:是否可以在一个 MongoDB 实例中运行多个 Javascript 操作?答:是的,我们可以在一个 MongoDB 实例中运行多个 JS 操作。通过 mongo shell 实例,我们可以指定要在服务器上运行的 JavaScript 文件的名称。该文件可以包含任意数量的 JS 操作。
问题:MongoDB 是最好的 NoSQL 数据库吗?如何以及为什么?答: MongoDB 是最适合用于数据分析和 Web 应用程序开发的 NoSQL 数据库。与需要专家分析数据的 Hadoop 不同,它可以帮助开发人员和数据科学家从存储的数据中获得洞察力。
MongoDB 允许高效的数据操作和管理功能。对多种 JavaScript 操作的支持和基于 Javascript 的 MEAN 堆栈增加了 MongoDB 的流行度。用于水平扩展和聚合框架的分片以构建管道使 MongoDB 快速高效,因此是最好的数据库。
问题:解释一下MongoDB中事务/锁定的过程?MongoDB面试题解析: MongoDB 支持具有读写锁的多粒度锁定。
MongoDB 中可能有三种类型的锁定机制:
- 全局层面
- 数据库级别
- 收藏级别
- R(共享锁),
- W(独占锁),
- r(意图共享锁),
- w(意图排他锁)。
问题:MongoDB常见面试题有哪些 - 解释一下 MongoDB 与 RDBMS 有何不同?回答:
参数 | RDBMS | MongoDB |
定义 | 它是一个关系数据库管理系统。 | 它是一个非关系数据库。 |
在职的 | 处理使用行和列的表之间的关系。 | 使用文档和字段的面向文档的系统。 |
分层数据存储 | 难以存储分层数据。 | 用于存储分层数据的内置规定 |
可扩展性 | 垂直可扩展。 | 垂直和水平可扩展。 |
表现 | 性能随着 RAM 容量的增加而提高。 | 性能随着处理器的增加而增加。 |
架构 | 必须预先决定和设计模式,更改模式很困难。 | 模式的动态创建和管理使设计变得灵活。 |
支持连接 | 支持复杂的连接。 | 不支持连接。 |
查询语言 | 使用 SQL 查询数据库。 | BSON 用于数据库查询。 |
支持 Javascript | 不支持基于 JavaScript 的客户端查询数据库。 | 为基于 Javascript 的客户端提供查询数据库的功能。 |
- 首先,打开命令提示符并运行 mongod.exe。
- 或者,你可以移动到安装MongoDB的路径,例如“C:MongoDB”
- 导航到 bin 文件夹,找到 mongod.exe 并双击执行它。
- 你也可以导航到所需的文件夹,例如“C: MongoDB/bin”并键入 mongo 以通过 shell 连接 MongoDB。
推荐阅读
- 最佳的机器学习常见面试题和答案合集解析
- Jenkins常见面试题有哪些(答案和解析指南)
- 10大常用Python通用库(哪个比较好())
- 2022年最佳C++ IDE和编辑器合集(哪个最好())
- JSON与XML有什么区别(比较、特性和示例)
- 最佳数据结构常见面试题和答案合集
- 详解Windows系统下SSD 4K对齐最正确的办法
- Victoria硬盘坏道修好工具运用图文详细教程
- 全方位的解析“电脑没有声音”的原因