- MongoDB 教程
- MongoDB - 首页
- MongoDB - 概述
- MongoDB - 优势
- MongoDB - 环境搭建
- MongoDB - 数据建模
- MongoDB - 创建数据库
- MongoDB - 删除数据库
- MongoDB - 创建集合
- MongoDB - 删除集合
- MongoDB - 数据类型
- MongoDB - 插入文档
- MongoDB - 查询文档
- MongoDB - 更新文档
- MongoDB - 删除文档
- MongoDB - 投影
- MongoDB - 限制记录数
- MongoDB - 排序记录
- MongoDB - 索引
- MongoDB - 聚合
- MongoDB - 复制
- MongoDB - 分片
- MongoDB - 创建备份
- MongoDB - 部署
- MongoDB - Java
- MongoDB - PHP
- 高级 MongoDB
- MongoDB - 关系
- MongoDB - 数据库引用
- MongoDB - 覆盖查询
- MongoDB - 分析查询
- MongoDB - 原子操作
- MongoDB - 高级索引
- MongoDB - 索引限制
- MongoDB - ObjectId
- MongoDB - MapReduce
- MongoDB - 文本搜索
- MongoDB - 正则表达式
- 使用 Rockmongo
- MongoDB - GridFS
- MongoDB - 固定集合
- 自动递增序列
- MongoDB 有用资源
- MongoDB - 问答
- MongoDB - 快速指南
- MongoDB - 有用资源
- MongoDB - 讨论
MongoDB 模拟测试
本节为您提供各种与MongoDB框架相关的模拟测试。您可以将这些示例模拟测试下载到本地机器,并在方便时离线解答。每个模拟测试都附带一个答案,以便您验证最终分数并进行自我评估。
MongoDB 模拟测试一
答案:B
解释
MongoDB 将数据存储在基于 JSON 结构的文档中。这些文档又包含键值对形式的数据。
答案:A
解释
SQL 数据库将数据行存储在表中,MongoDB 将文档存储在集合中。
题3 - 关于 MongoDB,以下哪项正确?
答案:D
解释
MongoDB 为与二维和三维地理空间问题相关的功能提供特定支持。
题4 - 以下哪个是有效的 MongoDB JSON 文档
{}
{ "user_id"=1, "user_name"="Joe Sanders", "occupation"=["engineer","writer"] }
{ "user_id":1; "user_name":"Joe Sanders"; "occupation":["engineer","writer"] }
{ "user_id":1, "user_name":"Joe Sanders", "occupation":[ "occupation1":"engineer", "occupation2":"writer" ] }
答案:A
解释
空文档在 MongoDB 中是有效的。但是,其余三个文档都存在这样或那样的问题。选项 B 有“=”,选项 C 有“;”,选项 D 的数组格式不正确。它应该是一个子文档。
题5 - 关于 MongoDB 进程,以下哪项解释正确?
A - mongod.exe 是 shell 进程,mongo.exe 是实际的数据库进程
B - mongo.exe 是 shell 进程,mongod.exe 是实际的数据库进程
答案:B
解释
MongoDB 包中的核心组件是:mongod,核心数据库进程;mongos,分片集群的控制器和查询路由器;以及 mongo,交互式 MongoDB Shell。
题6 - 假设有一个名为 posts 的集合,其字段包括:_id、post_text、post_author、post_timestamp、post_tags 等。以下哪个查询仅检索检索到的第一个文档中名为 post_text 的键?
A - db.posts.find({},{_id:0, post_text:1})
B - db.posts.findOne({post_text:1})
答案:D
解释
默认情况下,MongoDB 会返回每个文档的 _id 字段。因此,如果您只想获取 post_text 字段,则必须显式排除 _id 字段。此外,由于我们只需要检索第一个文档,因此必须使用 findOne 而非 find。
题7 - 关于 MongoDB 中 find 和 findOne 操作,以下哪项陈述不正确?
A - find() 返回集合中的所有文档,而 findOne() 只检索第一个文档。
B - find() 和 findOne() 返回指向集合文档的游标
答案:B
解释
findOne() 和 find() 查询非常不同。find() 方法返回游标,而 findOne() 返回实际的文档。因此,选项 B 不正确,其余选项正确。
题8 - 在包含 100 个 post 文档的集合中,以下命令的作用是什么?
db.posts.find().skip(5).limit(5)
答案:C
解释
skip 和 limit 函数是线性应用的,因此它将首先跳过文档 1-5,然后返回文档 6-10。
题9 - 以下哪个 MongoDB 查询等效于以下 SQL 查询
UPDATE users SET status = "C" WHERE age > 25
db.users.update( { age: { $gt: 25 } }, { status: "C" })
db.users.update( { age: { $gt: 25 } }, { $set: { status: "C" } })
db.users.update( { age: { $gt: 25 } }, { $set: { status: "C" } }, { multi: true })
db.users.update( { age: { $gt: 25 } }, { status: "C" }, { multi: true })
答案:C
解释
$set 用于设置文档中特定字段的值。set 的语法是 $set:{column_name : column_value}。此外,需要 {multi:true} 来更新所有文档。否则,只更新找到的第一个文档。
题10 - MongoDB explain() 方法不支持以下哪种详细模式
答案:D
解释
explain() 的可能模式是:“queryPlanner”、“executionStats”和“allPlansExecution”。
题11 - explain() 命令运行的默认模式是什么?
答案:A
解释
默认模式是“queryPlanner”。
题13 - 关于分片,以下哪项正确?
答案:C
解释
除非您转储整个数据,删除分片键然后重新导入所有内容,否则没有直接更改分片键的方法。其他所有选项都是错误的。分片在集合级别启用,它不会默认创建任何索引,最后分片环境支持常规排序。
答案:B
解释
最大 BSON 文档大小为 16 兆字节。最大文档大小有助于确保单个文档不会使用过多的 RAM,或者在传输过程中不会使用过多的带宽。
题15 - 索引键限制和每个集合的索引数量的最大值是多少?
答案:C
解释
索引条目的总大小(根据 BSON 类型可能包括结构开销)必须小于 1024 字节。单个集合最多只能有 64 个索引。
答案:A
解释
在默认配置中,MongoDB 每 60 秒将数据写入磁盘上的主数据文件。
题17 - 以下哪个命令查找 posts 集合中 post_timestamp 字段为 null 的所有文档?
A - db.posts.find( { post_timestamp : { $type: 10 } } )
B - db.posts.find( { post_timestamp: { $type: null } } )
答案:A
解释
$type 用于所有涉及检查 MongoDB 中字段类型的操作。10 代表 null 的 BSON 值。
Q 18 - mongoimport 命令用于
答案:C
解释
mongoimport 工具导入由 mongoexport 或其他第三方导出工具创建的扩展 JSON、CSV 或 TSV 导出内容。
Q 19 - 在 mongo shell 中,哪个命令可以用来显示 MongoDB 实例中的所有数据库?
答案:A
解释
show dbs 返回所有数据库的列表。
答案:D
解释
副本集的所有成员(除非 votes 值等于 0)都会参与选举投票。这包括所有延迟节点、隐藏节点和只读从节点。
Q 21 - 使用哪个命令可以检查名为 posts 的集合的大小?
答案:A
解释
要查看集合的统计信息(包括数据大小),请使用 mongo shell 中的 db.collection.stats() 方法。
Q 23 - 默认情况下,mongo shell 中的 MongoDB 游标配置为返回多少个文档?要获取下一组文档,使用哪个命令?
答案:A
解释
在 mongo shell 中,如果返回的游标没有使用 var 关键字赋值给变量,则游标会自动迭代最多 20 次 [1] 以打印结果中的前 20 个文档。要获取下一组结果,应使用 it 命令,它将迭代下一组结果。
Q 24 - 以下哪个命令将返回所有点赞数大于 100 小于 200(包括 100 和 200)的帖子?
A - db.posts.find({ likes : { $gt : 100, $lt : 200 } } );
B - db.posts.find({ likes : { $gte : 100, $lt : 200 } } );
C - db.posts.find({ likes : { $gt : 100 , $lte : 200 } } );
D - db.posts.find({ likes : { $gte : 100 , $lte : 200 } } );
答案:D
解释
由于 100 和 200 都包含在内,我们需要使用 $gte(大于等于)和 $lte(小于等于)。
Q 25 - 在我们的 posts 集合中,哪个命令可以用来查找所有作者姓名按字典顺序介于“A”和“C”之间的帖子?
A - db.posts.find( { post_author : { $gte : "A" , $lte : "C" } } );
B - db.posts.find( { post_author : { $gte : "C" , $lte : "A" } } );
C - db.posts.find( { post_author : { $gt : "A" , $lt : "C" } } );
答案:A
解释
$gt、$lt 和相关运算符也可以应用于字符串操作。它们的工作方式与在数值上相同。
答案表
题号 | 答案 |
---|---|
1 | B |
2 | A |
3 | D |
4 | A |
5 | B |
6 | D |
7 | B |
8 | C |
9 | C |
10 | D |
11 | A |
12 | B |
13 | C |
14 | B |
15 | C |
16 | A |
17 | A |
18 | C |
19 | A |
20 | D |
21 | A |
22 | D |
23 | A |
24 | D |
25 | A |