MongoDB面试系列-01

1. MongoDB 是什么?

MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。再高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB旨在给Web应用提供可扩展的高性能数据存储解决方案。

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

2. MongoDB 有哪些特点?

MongoDB是一个面向文档存储的数据库,操作起来比较简单和容易。

你可以在MongoDB记录中设置任何属性的索引(如:FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。

你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。

如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。

MongoDB支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。

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. 什么是非关系型数据库?

NoSQL是非关系型数据库,NoSQL = Not Only SQL。

关系型数据库采用的结构化的数据,NoSQL采用的是键值对的方式存储数据。

非关系型数据库的显著特点是不使用SQL作为查询语言,数据存储不需要特定的表格模式。

4. 常见的 NoSQL 数据库都有哪些?

常见的NoSQL数据库包括:MongoDB、Cassandra、CouchDB、Hypertable、Redis、Riak、HBASE、Memcache等。

5. 非关系型数据库有哪些类型?

  • -Key-Value 存储,eg:Amazon S3

  • 图表,eg:Neo4J

  • 文档存储,eg:MongoDB

  • 基于列存储,eg:Cassandra

6. MongoDB 和 CouchDB 有什么区别?

MongoDB和CouchDB都是面向文档的数据库。

MongoDB和CouchDB都是开源NoSQL数据库的最典型代表。除了都以文档形式存储外它们没有其他的共同点。

MongoDB和CouchDB在数据模型实现、接口、对象存储以及复制方法等方面有很多不同。

7. MongoDB 中什么是集合?

集合就是一组MongoDB文档。它相当于关系型数据库(RDBMS)中的表这种概念。集合位于单独的一个数据库中。一个集合内的多个文档可以有多个不同的字段。一般来说,集合中的文档都有着相同或相关的目的。

8. MongoDB 中 namespace 是什么?

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

9. 如果移除对象属性,该属性是否从存储层中删除?

如果用户移除对象的属性,该属性会从存储层中删除。

用户移除对象的属性之后,对象会重新保存,使用re-save()方法。

10. MongoDB 中能否使用日志特征进行安全备份?

MongoDB可以使用日志特征进行安全备份。

11. MongoDB 中允许空值 null 存在吗?

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

12. MongoDB 中更新操作立刻 fsync 到磁盘吗?

更新操作不会立刻fsync到磁盘,磁盘写操作默认是延迟执行的。

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

注意:fsync选项在命令行和经过getLastError_old是有效的。

13. 为什么 MongoDB 数据文件体积会很大?

MongoDB采用的预分配空间的方式,是为了防止文件系统碎片。

14. MongoDB 中启用备份故障恢复需要多久?

从备份数据库声明主数据库宕机到选出一个备份数据库作为新的主数据库将花费10到30秒时间。

这期间在主数据库上的操作将会失败,包括写入和强一致性读取(strong consistent read)操作。

注意的是在slaveOk模式下,第二数据库上可以执行最终一致性查询(eventually consistent query)。

15. MongoDB 中支持事务加锁吗?

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

MongoDB 4.0中不提供事务支持。若要获得类似的结果,请使用findOneDupdate()。

16. MongoDB 中什么是副本集?

MongoDB中副本集由一组MongoDB实例组成,包括一个主节点多个次节点,MongoDB客户端的所有数据都写入主节点(Primary),副节点从主节点同步写入数据,以保持所有复制集内存储相同的数据,提高数据可用性。

17. MongoDB 中什么是聚合?

聚合操作能够处理数据记录并返回计算结果。聚合操作能将多个文档中的值组合起来,对成组数据执行各种操作,返回单一的结果。它相当于SQL中的count(*)组合group by。

对于MongoDB中的聚合操作,应该使用aggregate()方法。

>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

18. MongoDB 中如何实现排序?

MongoDB中的文档排序是通过sort()方法来实现的。sort()方法可以通过一些参数来指定要进行排序的字段,并使用1和-1来指定排序方式,其中1表示升序,而-1表示降序。

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

19. MongoDB 中什么是 master 或 primary?

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

注:

Primary和Secondary是对于IDE通道而言的,前者是首要的,后者是次要的。

Master和Slave是相对于同一个IDE通道中的顺序而言的,前者是主盘,后者是从盘。

20. MongoDB 中什么是 secondary 或 slave?

MongoDB 中Seconday(Slave)从当前的primary上复制相应的操作。它是通过跟踪复制oplog(local.oplog.rsopen in new window)来实现的。

注:

Primary和Secondary是对于IDE通道而言的,前者是首要的,后者是次要的。

Master和Slave是相对于同一个IDE通道中的顺序而言的,前者是主盘,后者是从盘。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/626609.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习算法实战案例:CNN-LSTM实现多变量多步光伏预测

文章目录 1 数据处理1.1 导入库文件1.2 导入数据集1.3 缺失值分析 2 构造训练数据​3 模型训练3.1 CNN-LSTM网络3.2 模型训练 4 模型预测答疑&技术交流机器学习算法实战案例系列 1 数据处理 1.1 导入库文件 from matplotlib import pyplot as pltimport tensorflow as tf…

PHP+MySQL组合开发:微信小程序万能建站源码系统 附带完整的搭建教程

随着移动互联网的快速发展,微信小程序已成为企业进行移动营销的重要工具。然而,对于许多中小企业和个人开发者来说,开发一个功能完善、用户体验良好的小程序是一项复杂的任务。罗峰给大家分享一款微信小程序万能建站源码系统。该系统采用PHPM…

SAP PP 常用表整理

表名描述AFFLWork ordersequence加工单顺序AENR工程变更管理AEOI工程变更管理AFFTOrder processinstructions订单-流程指令AFFVOrder processinstruction values订单-流程指令值AFKOOrder header data PPorders订单表头数据 PP 订单AFPOOrderitem订单项AFRUOrder co…

CMMI3.0认证的卓越方案!

CMMI3.0是软件工程和组织发展领域中的一项重要认证,它旨在提升组织的绩效和成熟度,促进卓越的软件开发和管理实践。本文将探讨CMMI3.0认证的意义、要求以及实施过程,并介绍一些卓越方案,帮助组织达到该认证。 CMMI3.0认证的意义 …

线控底盘新玩家凶猛!这家企业的ONE-BOX产品正式量产下线

高工智能汽车获悉,12月27日,威肯西科技宣布旗下ONE-BOX线控制动产品--液压解耦制动系统HDBS实现量产下线。该产品将与多个汽车品牌签署量产及定点协议,预计年产量达到60万套。 据了解,作为耀宁科技集团的一级子公司,威…

JS CRC16/XMODEM

const byteData HexString2Bytes("1A3B4C5D") let crc crc16(byteData) // CRC转换&#xff1a; A185 console.log("CRC转换&#xff1a;",crc)function crc16(buffer) {var crc 0x0000;var odd;for(var i 0; i < buffer.length; i) {crc ^ (buffer[…

【正点原子】STM32电机应用控制学习笔记——8.FOC简介

FOC是适用于无刷电机的&#xff0c;而像有刷电机&#xff0c;舵机&#xff0c;步进电机是不适用FOC的。FOC是电机应用控制难度最大的部分了。 一.FOC简介&#xff08;了解&#xff09; 1.介绍 FOC&#xff08;Filed Oriented Control&#xff09;即磁场定向控制&#xff0c;…

ITK imagedata三维体数据与VTK imagedata三维体数据的互相转换

VTK的三维imagedata转化为ITK的三维imagedata&#xff0c;以及和ITK的三维imagedata转化为VTK的三维imagedata的代码&#xff1a; #include <itkVTKImageToImageFilter.h> #include <vtkImageData.h> #include <itkImageToVTKImageFilter.h> #include <i…

MySQL 8.0中引入的选项和变量(三)

以下是在MySQL 8.0中新增的系统变量、状态变量和服务选项&#xff1a; • authentication_ldap_sasl_log_status: LDAP服务器日志级别。MySQL 8.0.11版本新增。 • authentication_ldap_sasl_max_pool_size: LDAP服务器最大连接池大小。MySQL 8.0.11版本新增。 • authenticat…

拼多多商家电话采集软件使用教程

拼多多作为一个中国著名的电商平台&#xff0c;拥有大量的商家信息。如果您需要采集拼多多商家的联系电话&#xff0c;可以使用Python编写一个简单的爬虫程序来实现。下面是一个基本的教程&#xff0c;帮助您使用拼多多商家电话采集软件。 步骤1&#xff1a;安装Python和相关库…

rust获取本地ip地址的方法

大家好&#xff0c;我是get_local_info作者带剑书生&#xff0c;这里用一篇文章讲解get_local_info的使用。 get_local_info是什么&#xff1f; get_local_info是一个获取linux系统信息的rust三方库&#xff0c;并提供一些常用功能&#xff0c;目前版本0.2.4。详细介绍地址&a…

【问题记录】使用命令语句从kaggle中下载数据集

从Kaggle中下载Tusimple数据集 1.服务器环境中安装kaggle 使用命令&#xff1a;pip install kaggle 2.复制下载API 具体命令如下&#xff1a; kaggle datasets download -d manideep1108/tusimple3.配置kaggle.json文件 如果直接使用命令会报错&#xff1a; root:~# kagg…

Pandas实战100例 | 案例 62: 计算累计统计量

案例 62: 计算累计统计量 知识点讲解 在数据分析中&#xff0c;计算累计统计量&#xff08;如累计和、累计最大值、累计最小值等&#xff09;是一种常见的操作。Pandas 提供了简单的方法来计算这些统计量。 计算累计统计量: cumsum(): 计算累计和。cummax(): 计算累计最大值…

力扣hot100 二叉树中的最大路径和 递归

Problem: 124. 二叉树中的最大路径和 文章目录 解题方法复杂度&#x1f496; Code 解题方法 &#x1f468;‍&#x1f3eb; 参考思路 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) &#x1f496; Code /*** Definition for a binary tree no…

云计算概述(发展过程、定义、发展阶段、云计算榜单)(一)

云计算概述&#xff08;一&#xff09; &#xff08;发展过程、定义、发展阶段、云计算榜单&#xff09; 本文目录&#xff1a; 零、00时光宝盒 一、前言 二、云计算的发展过程 三、云计算的定义 四、云计算发展阶段 五、云计算公司榜单看云计算兴衰 六、参考资料 零、0…

【Shell编程练习】编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态

系列文章目录 输出Hello World 通过位置变量创建 Linux 系统账户及密码 监控内存和磁盘容量&#xff0c;小于给定值时报警 猜大小 输入三个数并进行升序排序 系列文章目录编写脚本测试 192.168.4.0/24 整个网段中哪些主机处于开机状态,哪些主机处于关机状态 编写脚本测试 192.…

mysql 8.0 双密码

当需要定期修改密码&#xff0c;又不想影响现有连接的情况下&#xff0c;怎么才能做到无缝切换呢 添加新密码 ALTER USER appuser1host1.example.com IDENTIFIED BY password_b RETAIN CURRENT PASSWORD; 废弃旧密码 ALTER USER appuser1host1.example.com DISCARD OLD PASS…

大功率直流电子负载

大功率直流电子负载专门用于测试和模拟电源设备的设备&#xff0c;它可以模拟实际的负载情况&#xff0c;对电源设备进行各种性能参数的测试。这种设备在电源设备的研发、生产和质量控制中起着重要的作用。 大功率直流电子负载的主要特点有&#xff1a; 高功率&#xff1a;大功…

中科院自动化所:基于关系图深度强化学习的机器人多目标包围问题新算法

摘要&#xff1a;中科院自动化所蒲志强教授团队&#xff0c;提出一种基于关系图的深度强化学习方法&#xff0c;应用于多目标避碰包围(MECA)问题&#xff0c;使用NOKOV度量动作捕捉系统获取多机器人位置信息&#xff0c;验证了方法的有效性和适应性。研究成果在2022年ICRA大会发…

Pandas实战100例 | 案例 46: 列重新排序

案例 46: 列重新排序 知识点讲解 在某些情况下&#xff0c;你可能需要改变 DataFrame 中列的顺序。Pandas 允许你通过指定列名的列表来重新排列列的顺序。 列重新排序: 通过指定列名的新顺序列表&#xff0c;可以对 DataFrame 的列进行重新排序。 示例代码 # 准备数据和示…