MongoDB面试题

1,041 阅读4分钟

1 MongoDB的基本用法

前言:

	是一个分布式文件存储数据库
	将数据存储为一个文档,数据结构由kv组成,采用的是BSON存储文档数据。BSON()是一种类似json对象的一种二进制形式存储格式,字段值可以包含其他的文档,数组以及文档数组。、

基本概念:

	1.数据库
		MongoDB的单个实例可以容纳多个独立的数据库,比如一个学生管理系统就可以对应一个数据库实例。数据库是一个所有集合的容器,在文件系统中每一个数据库都有一个相关的物理文件。

	2.集合(表)
		数据库是由集合组成的,一个集合表示一个实体,如学生集合。
	3.文档(记录)
		集合是由文档组成,一个文档表示一条记录,比如一个学生李四就是一个文档。
		文档是一组kv组成的,文档是动态模式,
	
	例如:school(学校,一个数据库实例)->collections(集合,一个集合用来表示一个实体。学生集合)->grade(班级中一条数据也就是一个文档表示一条记录,李四就是一个文档)

MongoDB和关系型数据库区别

MongoDB 关系型数据库
database database
collection table
document record/row
field column

2 MongoDB优势

1.面向文档存储。json格式的文档保存数据。
2.任何属性都可以建立索引。
3.复制,高扩展。
4.自动分片
5.丰富查询功能。
6.快速即时更新。
7.Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。

3 非关系型数据库

显著特点不使用sql作为查询语言,存数据不需要特定的表格模式

4 在那些场景使用MongoDB?

1.大数据
2.内容管理系统
3.移动apps
4.数据管理

5 MongoDB中的命名空间是什么意思?

MongoDB存BSON对象在collection中,数据库名字和collection名字以句点连接起来叫做名字空间(namespace)
索引的存储数据结构是B树,索引命名空间存储着对B树的根节点的指针。

6 MongoDB的分片是什么意思

分片是将数据水平切分到不同的物理节点。当应用数据越来越大的时候,数据量也就大了。单台机器满足写入的吞吐量。利用分片可以添加更多的机器来应对数据量大的问题。

7 MongoDB中为什么使用分析器

MongoDB中包含一个可以显示数据库中每个操作性能特点的数据库分析器。通过分析器可以找到比预期慢的查询;利用这个信息,考虑是否添加索引。

8 MongoDB支持主外键?

不支持。MongoDB本身api需要硬编码实现外键关联,很鸡肋。

9 MongoDB支持哪些数据类型

1.string
2.integer
3.double
4.boolean
5.object
6.object ID(用于存文档id,由四部分组成:时间戳,客户端id,客户进程id,三个字节的增量计数器)
7.arrays
8.min/max keys
9.datatime
10.code(用于存储JavaScript代码)
11.regular expression(在文档中存正则表达式) 等。

10 MongoDB中什么是索引

索引用来高效查询。没有索引的MongoDB将扫描整个集合(表)的所有的文档(记录),处理大量数据,效率低。
索引是一种特殊的数据结构。将一小块的数据集合保存为容易遍历的形式。

11 MongoDB怎么添加索引

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

12 MongoDB怎么查询集合中的文档

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

13 MongoDB用什么方式格式化输出结果

db.collectionName.find().pretty()

14 MongoDB中怎么排序

使用1和-1来指定排序方式,1升序,-1降序。
db.collectionName.find({key:value}).sort({columnName:1})//升序

15 什么是聚合

聚合操作能够处理数据记录并返回计算结果。相当于sql中的count(*)组合group by。对于MongoDB的聚合操作,使用aggregate()方法。
db.collectionName.aggregate(AGGREGATE_OPERATION)

16 MongoDB中什么是副本集(避免单点故障)

副本集由一组MongoDB实例组成。

17 MongoDB支持存储过程吗?

支持。它是由JavaScript写的,保存在db.system.js表中。

18 为什么MongoDB的数据文件很大。

MongoDB采用预分配空间的方式来防止文件碎片

19 MongoDB成为最好的nosql数据库的原因?

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

20 MongoDB允许null吗?

不能添加null到collection。但是可以添加空对象到文档

21 MongoDB的使用教程

跳转到本网站:blog.csdn.net/qq_41656640…