
- 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 |