28个MongoDB经典面试题详解

来源:脚本之家  责任编辑:小易  

我来解释一下吧。 collection其实就是关系型数据库中的table一样。通常说的“一张表”,在mongodb中就是一个collection. 而shard是集群中的概念。 mongodb集群分两种:一种是Replica set,即副本集,由多个mongod组成,mongod之间存在主副关系,数

MongoDB是目前最好的面向文档的免费开源NoSQL数据库。

单个collection备份:mongoexport-hdbhost-ddbname-ccollectionname-fcollectionKey-odbdirectory-h:MongoDB所在服务器地址-d:需要恢复的数据库实例-c:需要恢复的集合-f:需要导出的字段(省略为所有字段)-o:表示导出的文件名

如果你正准备参加MongoDB NoSQL数据库的技术面试,你最好看看下面的MongoDB NoSQL面试问答。

用aggregation pipeline: db.log.aggregate([ {$match:{list:{$exists:true}}}, {$project:{_id:1,sizeOfList:{$size:'$list'},bInSeq:{$setIsSubset:[['b'],'$seq']}}}])但是$size和$setIsSubset这两个operator需要mongodb服务器是2.6的。

这些MongoDB NoSQL面试问答涵盖了NoSQL数据库基本的概念,复制(Replication),分片(Sharding),事务和锁,跟踪分析工具(Profiler),Nuances和日志等特性。

aggregate是monogodb的聚合函数。完成类似于sql中的sum,count,group by等相关操作 1:count(*) /** * select count(*) count from zipsController */ var pipeline = [ { $group: { _id: null, count: {$sum: 1} } } ]; 2:sum(*) /** * select s

让我们看看下面的这些MongoDB NoSQL数据库的面试问答吧:

java面试中redis,mongodb类的,会问哪些问题,怎么回答1、可能会问nosql和关系型数据库的区别:优点:1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用Oracle那样花费大量成本购买使用,相比关系型

1. 你说的NoSQL数据库是什么意思?NoSQL与RDBMS直接有什么区别?为什么要使用和不使用NoSQL数据库?说一说NoSQL数据库的几个优点?

分两种情况解释,一种是不能动,另一种是不存在。问题假设一个如此长的长度,实际是想询问,力的传播速度是否有可能超过光速?情况1,非刚体对于任何实际存在的物体而言,都是非刚体,力的传递是通过弹性波来进行的,其速度远小于光速,具体速度与分子间的作用力,结构的紧密程度以及外界条件有关。(实际上力也是一种波,传播速度不能大于光速)情况2,刚体关键在于我们对于刚体的定义是什么,来自刚体的定义,刚体是指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。绝对刚体实际上是不存在的,只是一种理想模型,因为任何物体在受力作用后,都或多或少地变形,如果变形的程度相对于物体本身几何尺寸来说极为微小

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

中国的\"高考工厂\"真的有用吗?又是一年高考时,回想起当年的高考,你后悔自己没有好好努力吗?大家好,我是夜聊主持人——曲YI。高考临近,各种各样有关高考的消息,也开始铺天盖地的袭来。不过,在众多消息中,这条新闻还是引起了很多人的热议。记者通过对陪读母亲杨英的采访,还原了一段考生在“考试工厂”毛坦厂中学备考的真实经历。【生活】据陪读母亲杨英介绍:毛坦厂中学所在的毛坦厂镇,虽然地处大别山脚下,但由于这里聚集了大量的陪读家长,所以这里的物价很高,堪称“小上海”。其中学校附近的房子最是枪手,十平米的房子,每学期的租金就要一万元。就这样,很多房子还要提前一年预定。【学习】在学习方面,这里的压力更是大。

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

美石为玉。君子无故玉不离身。中国几千年文化历史可以说是一个玉的历史。但是,你也可以看到,如今国人对于玉石的兴趣也仅仅停留在把玩,观赏,一点点兴趣上。当然抛开真正的收藏不谈,玉不再是现有中国文化的一部分。一、市场炒作我们都知道稀缺物必有升值空间,但是谁也不知道市场有多大。用行里人的话就是:真货就那么多,你要还想要更多,只剩一个——打眼。而现在抛开假货不谈,整个玉石市场包括财经市场都是前景不明的时候,谁进去谁倒霉。二、打眼的假货什么东西都能山寨,这就是中国。玉石这种石头,大家都能整出个B/C货来,对了,还有D货不止。而普通老百姓哪有那个鉴别时间和工夫,基本上只剩打眼。听着就让人心塞。三、可信的品牌

在处理非结构化/半结构化的大数据时;在水平方向上进行扩展时;随时应对动态增加的数据项时可以优先考虑使用NoSQL数据库。

初入幼儿园对于很多孩子来说,这是第一次正式离开父母,开始学习独立。有的宝宝哭闹、烦躁,出现分离焦虑情绪,对开学入园表现出恐惧和厌恶,甚至会严重的出现睡眠不安、绝食等情况。首先爸爸妈妈应当了解,宝宝产生一系列心理和生理上的非正常反应,称之为幼儿园入园焦虑,是因为对新环境不适应所导致的。这不仅是老师需要去解决的问题,更是家长应当提前注意做好准备的。赵老师在这里就帮爸爸妈妈们整理出幼儿园新生入园必读!入园焦虑,你中枪了么?入园焦虑具体会表现为,孩子和家长分离时发脾气、哭闹,比放假在家更紧张、着急,体现在生理上就是多汗、尿床、尿裤子、失眠和拒绝吃饭。那为什么孩子会产生这些情况呢?只是因为简单的要和爸爸

在考虑数据库的成熟度;支持;分析和商业智能;管理及专业性等问题时,应优先考虑关系型数据库。

2. NoSQL数据库有哪些类型?

NoSQL数据库的类型

例如:MongoDB, Cassandra, CouchDB, Hypertable, Redis, Riak, Neo4j, HBASE, Couchbase, MemcacheDB, RevenDB and Voldemort are the examples of NoSQL databases.详细阅读。

3. MySQL与MongoDB之间最基本的差别是什么?

MySQL和MongoDB两者都是免费开源的数据库。MySQL和MongoDB有许多基本差别包括数据的表示(data representation),查询,关系,事务,schema的设计和定义,标准化(normalization),速度和性能。

通过比较MySQL和MongoDB,实际上我们是在比较关系型和非关系型数据库,即数据存储结构不同。详细阅读

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

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

细节可以参见下面的链接:

MongDB vs CouchDB

CouchDB vs CouchBase

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

以下特点使得MongoDB成为最好的NoSQL数据库: 面向文件的 高性能 高可用性 易扩展性 丰富的查询语言

6.32位系统上有什么细微差别?

journaling会激活额外的内存映射文件。这将进一步抑制32位版本上的数据库大小。因此,现在journaling在32位系统上默认是禁用的。

7. journal回放在条目(entry)不完整时(比如恰巧有一个中途故障了)会遇到问题吗?

每个journal (group)的写操作都是一致的,除非它是完整的否则在恢复过程中它不会回放。

8. 分析器在MongoDB中的作用是什么?

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

9. 名字空间(namespace)是什么?

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

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

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

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

是的。

12. 允许空值null吗?

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

13. 更新操作立刻fsync到磁盘?

不会,磁盘写操作默认是延迟执行的。写操作可能在两三秒(默认在60秒内)后到达磁盘。例如,如果一秒内数据库收到一千个对一个对象递增的操作,仅刷新磁盘一次。(注意,尽管fsync选项在命令行和经过getLastError_old是有效的)(译者:也许是坑人的面试题??)。

14. 如何执行事务/加锁?

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

15. 为什么我的数据文件如此庞大?

MongoDB会积极的预分配预留空间来防止文件系统碎片。

16. 启用备份故障恢复需要多久?

从备份数据库声明主数据库宕机到选出一个备份数据库作为新的主数据库将花费10到30秒时间。这期间在主数据库上的操作将会失败--包括写入和强一致性读取(strong consistent read)操作。然而,你还能在第二数据库上执行最终一致性查询(eventually consistent query)(在slaveOk模式下),即使在这段时间里。

17. 什么是master或primary?

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

18. 什么是secondary或slave?

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

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

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

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

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

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

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

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

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

23. 当我试图更新一个正在被迁移的块(chunk)上的文档时会发生什么?

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

24. 如果在一个分片(shard)停止或者很慢的时候,我发起一个查询会怎样?

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

25. 我可以把moveChunk目录里的旧文件删除吗?

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

26. 我怎么查看 Mongo 正在使用的链接?

db._adminCommand("connPoolStats");

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

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

28. 如果我在使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用吗?

可以。

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

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

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

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

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

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

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

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

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

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

更多关于MongoDB经典面试题请查看下面的相关链接

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

java面试中redis,mongodb类的,会问哪些问题,怎么回答

1、可能会问nosql和关系型数据库的区别:

优点:

1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用Oracle那样花费大量成本购买使用,相比关系型数据库价格便宜

2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库

3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型

4)扩展性:关系型数据库有类似join这样的多表查询机制的*导致扩展很艰难

缺点:

1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。

2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本

3)不提供关系型数据库对事物的处理

2、介绍下redis和mongodb:

自行google。

3、应用场景:

redis:

a.主要是做热点数据缓存。

b.数据过期处理。

c.消息队列等功能。

d.计数,例如投票等。

mongodb:

mongodb的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身。mongo适用于以下场景:

a.网站数据:mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

b.缓存:由于性能很高,mongo也适合作为信息基础设施的缓存层。在系统重启之后,由mongo搭建的持久化缓存可以避免下层的数据源过载。

c.大尺寸、低价值的数据:使用传统的关系数据库存储一些数据时可能会比较贵,在此之前,很多程序员往往会选择传统的文件进行存储。

d.高伸缩性的场景:mongo非常适合由数十或者数百台服务器组成的数据库。

e.用于对象及JSON数据的存储:mongo的BSON数据格式非常适合文档格式化的存储及查询。

4、支持的数据类型:

内容比较多,自行将网上的信息整理一下。

mongodb 解决了哪些问题

在MongoDB中,文档是对数据的抽象,它被使用在Client端和Server端的交互中。所有的Client端(各种语言的Driver)都会使用这种抽象,它的表现形式就是我们常说的BSON(Binary JSON )。 BSON是一个轻量级的二进制数据格式。

mongodb 多表查询问题,能否给个例子.

mongodb不支持多表联接查询

它的每一条记录以类式于Map的形式存储,所以它只能从一个表里面查询出结果,再到另一个表里把该结果作为一个条件再进行下一步查询

如何用mongodb设计试题库

StringBuilder sb=new StringBuilder(); foreach (var Student in jing) { sb.AppendFormart("姓名={0},Nameid={1},性别={2},班级={3},专业={4}",Student.姓名,Student.Nameid,Student.性别,Student.班级,Student.专业); } this.textBox1.text=sb.tostring();

请教一个mongodb分片高并发写问题

分片是MongoDB提供的一种机制,其可以将大型的集合分割保存到不同的服务器上。与其他的分区方案相比,MongoDB几乎能自动为我们完成所有事情。只要我们进行简单的配置,并告诉MongoDB要分配的数据,它就可以自动维护数据在不同服务器之间的平衡。

  • 本文相关:
  • mongodb常用数据库命令大全
  • 修复 mac brew 安装 mongodb 报 error: no available formula with the name ‘mongodb’ 问题详解
  • mongodb启动报错 28663 cannot start server
  • node.js操作mongodb数据库实例分析
  • mongodb数据库安装配置、基本操作实例详解
  • windows10安装mongodb4.0详细步骤及启动配置教程
  • nodejs对mongodb数据库的增加修删该查实例代码
  • mongodb基本命令实例小结
  • win10 64位安装mongodb数据库的详细教程
  • linux下安装mongodb教程
  • python操作redis和mongodb的方法
  • dotnet core链接mongodb代码实例
  • zabbix3.4监控mongodb数据库状态的方法
  • windows安装压缩版mongodb的教程
  • 在laravel中使用mongodb的方法示例
  • 关于mongodb谨防索引seek的效率问题详析
  • mongodb实现问卷/考试设计功能
  • centos下升级python及mongodb驱动安装问题
  • java操作mongodb数据库方法详解
  • mongodb中javascript脚本编程简介和入门实例
  • mongodb整库备份与还原以及单个collection备份、恢复方法
  • mongodb添加仲裁节点报错:replica set ids do not match的解决方
  • mongodb简介 mongodb五大特色
  • mongodb入门教程之分片技术详解
  • mongodb设置后台运行的方法
  • mongodb数据库两阶段提交实现事务的方法详解
  • mongodb数据库入门之curd简单操作示例
  • mongodb数据库入门学习笔记之下载、安装、启动、连接操作解析
  • java面试中redis,mongodb类的,会问哪些问题,怎...
  • mongodb 解决了哪些问题
  • mongodb 多表查询问题,能否给个例子.
  • 如何用mongodb设计试题库
  • 请教一个mongodb分片高并发写问题
  • mongodb多个collection及shard的问题
  • mongodb分片数据库指定问题
  • mongodb数据field指定问题
  • 关于mongodb的aggregate问题,求解答
  • java面试中redis,mongodb类的,会问哪些问题,怎...
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved