理解MonoDB

理解 MongoDB

MongoDB數據庫是開放源碼、面向文檔的數據庫,用 C++編寫,能隨意擴展數據庫,這是面向文檔的數據庫的優勢。安裝 MongoDB 並創建數據庫、集合和文檔及Mongo 的動態查詢特性

MongoDB 是什麼?

NoSQL表示不使用 SQL 語言與數據庫交互的數據庫軟件。項目之一就是 MongoDB,類似於 JSON 的文檔集合存儲數據。MongoDB 相比其他 NoSQL 數據庫的優勢之一是它強大的、基於文檔的查詢語言,查詢非常容易轉換,使從關係數據庫到 MongoDB 的過渡變得簡單。
MongoDB 以類似於 JSON 的文檔中存儲數據(使用 BSON,一個 JSON 的二進制版本),存儲數據的方式是鍵/值對。MongoDB 優於其他文檔數據庫的特性是容易將 SQL 語句轉換成 MongoDB 查詢函數調用。使用關係數據庫的組織很容易遷移到 MongoDB。也容易安裝和使用,有二進制和驅動程序兩種形式,兼容主流操作系統和編程語言。
MongoDB 是基於 GNU AGPL (Affero General Public License) version 3.0 的許可。彌補了版權限制不適用於軟件使用而僅適用軟件分發的漏洞。對於在雲中存儲而不經常安裝在客戶端上的軟件當然是重要的。使用常規 GPL ,會感覺實際上無法進行分發,從而規避了許可條款。
開發人員從各種編程語言連接 MongoDB 的官方驅動程序。

面向文檔的數據庫

面向文檔的數據庫在鬆散定義的文檔中存儲數據。關係數據庫管理系統(RDBMS)表,如需要添加一個列,要改變表本身的定義,將該列添加到每一條現有的記錄(雖然可能是一個空值)。是由於 RDBMS 嚴格的基於模式的設計。然而,利用文檔時,可在不改變任何其他文檔的情況下爲個別文檔添加新屬性。因爲面向文檔的數據庫在設計上通常非模式化的。
另一個基本差異是面向文檔的數據庫不在文檔之間規定嚴格的關係。有助於維護它們的非模式化設計。與十分依賴規範化數據存儲關係的關係型數據庫有很大不同。一個單獨的存儲區存儲相關數據不同,在文檔數據庫中被嵌入文檔本身,比引用存儲到另一個存儲相關數據的文檔中要快得多,因爲每個引用都需要一個附加查詢。
在一個父文檔中包含自成體系的數據,這種面向文檔的數據庫非常適合。在 MongoDB 中,有關博客文章的文檔只需要一個 comments 屬性來存儲該文章的評論。使用關係數據庫,則可能需要一個帶 ID 主關鍵字的 comments 表、一個帶 ID 主關鍵字的 posts 表和一箇中間的映射表 post_comments,此映射表用於定義哪個評論屬於哪篇文章。簡單的事增加了不必要的複雜性。
必須分開存儲相關數據,在 MongoDB 中也可以簡單地使用一個獨立的集合來完成。另一個好的示例是把客戶訂單信息存儲在 MongoDB 文檔中。它通常包含以下信息:客戶、訂單、訂單條目和產品信息。使用 MongoDB ,可以在獨立的集合中存儲客戶、產品和訂單,但是需要把訂單項數據嵌入在相關的訂單文檔中。然後,需要使用類似於外部關鍵字的 ID 來引用 products 和 customers 集合。由於這種混合方法非常簡單,使得 MongoDB 成爲已習慣於使用 SQL 的開發 人員的極好選擇。如上所述,應該花點時間爲每個單獨用例選擇合適的方法,相比於從其他集合中引用數據,採用在文檔中嵌入數據的方法將獲得顯著的性能收益

功能概覽

MongoDB 不僅是一個基本的鍵/值對存儲數據庫,它的其他特性:
可用於 Windows、Mac OS X、Linux 和 Solaris 的官方二進制版本,可用於自構建的源代碼分發
可用於 C、C#、C++、Haskell、Java、JavaScript、Perl、PHP、Python、Ruby 和 Scala 的官方驅動程序,及可用於其他語言的社區支持的驅動程序。
Ad-hoc JavaScript 查詢能夠使用基於任何文檔屬性的任何條件來查找數據。這些查詢對應於 SQL 查詢的功能,使 SQL 開發人員能夠很直觀地編寫 MongoDB 查詢。
支持查詢中的正則表達式
MongoDB 查詢結果存儲在提供過濾、聚合和排序等一系列功能的遊標中,包括 limit()、skip()、 sort()、count()、 distinct() 和 group()。

高級聚合的 map/reduce 實現

使用 GridFS 的大文件存儲
類似於 RDBMS 的屬性索引支持,可以直接在文檔的選定屬性上創建索引
使用提示、解釋和分析的查詢優化特性
類似於 MySQL 的主/從複製
基於集合的對象存儲,在需要規範化數據時允許參考查詢
通過自動分片功能水平擴展
高性能無爭用併發機制的即時更新
在線 shell 讓您能夠不安裝 MongoDB 即可試用
深入的文檔資料,已出版或正在寫作中的多本圖書

安裝 MongoDB

在 Windows 上安裝 MongoDB 十分簡單。在 Web 瀏覽器中,轉到 http://www.mongodb.org/downloads 並下載適用於 Windows 的最新版本的穩定產品。把壓縮文件解壓到 C:\ 驅動器,這將創建一個名稱類似於 mongodb-win32-i386-1.6.4 的文件夾。爲了簡便,將這個文件夾重命名爲 mongo 。接下來,需要創建一個數據目錄。在 Windows 資源管理器中,轉到 C:\ 驅動器的根目錄下並創建一個名爲 data 的新文件夾。此文件夾中,創建一個名爲 db 的文件夾。
現在可以啓動 MongoDB 服務器。使用 Windows 資源管理器導航至 C:\mongo\bin 並雙擊 mongod.exe。關閉打開的命令提示符窗口將會停止 MongoDB 服務器。因此,將 MongoDB 服務器設置爲 Windows 服務更爲方便。
打開命令提示符窗口 (啓動 > 運行 >,輸入 cmd 並按 確定),然後發出清單 1 中的命令。

1. 將 MongoDB 服務器設置爲一個服務

> cd \mongo\bin
> mongod --install --logpath c:\mongo\logs --logappend
--bind_ip 127.0.0.1 --directoryperdb

2. 創建服務成功

all output going to c:\mongo\logs
Creating service MongoDB.
Service creation successful.
Service can be started from the command line via 'net start "MongoDB"'.

將 Mongo 作爲服務安裝後,現在可以用以下命令啓動它:> net start "MongoDB"

3. Mongo 成功啓動

The Mongo DB service is starting.
The Mongo DB service was started successfully.

位於 c:\mongo\bin 文件夾中並輸入以下命令:> mongo.
另一種方法是,在 Windows 資源管理器中導航至 C:\mongo\bin 並雙擊 mongo.exe。

4. 啓動 shelll

MongoDB shell version: 1.8.1
connecting to: test

MongoDB 使用入門
MongoDB 發行版包含一個 shell 應用程序,能夠完全控制數據庫。通過使用 shell,可以使用服務器端 JavaScript 功能來創建和管理數據庫、集合、文件和索引。快速啓動和運行 MongoDB 變得容易。
MongoDB shell
MongoDB shell 應用程序包含在 MongoDB 發行版的 bin 文件夾中。在 Windows 系統中,它就是 mongo.exe 。在 Windows 資源管理器中,雙擊此程序即可啓動 shell 。在基於 UNIX? 的操作系統中(包括 Mac OS X),通過在一個終端窗口(假使您按照以上說明將 MongoDB 目錄加入到路徑)執行 mongo 命令啓動 MongoDB shell。
第一次啓動 shell 時,將看到清單 5 中消息。
5 啓動 shell 時的消息

MongoDB shell version: 1.8.1
connecting to: test
>

現在已連接到本地 MongoDB 服務器,尤其是“測試”服務器。需要幫助,在 Mongo shell 提示符下發出 "help" 命令。 圖 1 顯示了典型的幫助命令的輸出。
圖 1. Mongo shell help命令的輸出

wKioL1gqX6GCpgNqAADNwKHl6lY633.jpg

注意,不需要預定義 colors 集合,當使用存儲功能插入一個條目時,文檔將自動創建。 在這個例子中,創建了一個非常簡單的文檔。使用類似於 JSON 的語法可以創建更復雜的文檔。考慮下面的 JSON 文檔,它表示了一個訂單或發票

6 創建一個簡單的文檔

{
   order_id: 109384,
   order_date: new Date("12/04/2010"),
   customer: {
       name: "Joe Bloggs",
       company: "XYZ Inc.",
       phone: "(555) 123-4567"
   },
   payment: {
       type: "Cash",
       amount: 4075.99,
       paid_in_full: true
   },
   items: [
       {
           sku: "ABC1200",
           description: "A sample product",
           quantity: 1,
           price_per_unit: 75.99,
       }, {
           sku: "XYZ3400",
           description: "An expensive product",
           quantity: 2,
           price_per_unit: 2000
       }
   ],
   cashier_id: 340582242
}

文檔可以包括字符串、整數、浮點數、日期、對象、數組等的各種數據類型。在清單 6 中,訂單條目直接嵌入在訂單文檔中,使得以後查詢文檔時檢索信息快得多。
由於 MongoDB shell 使用 JavaScript,當您與數據庫交互時,可以編寫規則的 JavaScript 結構 。以清單 7爲例,它創建一個字符文檔集合,每個集合都包含字符的字符串表示形式及其關聯的 ASCII 代碼。
7. 創建一個字符文檔集合

> var chars = "abcdefghijklmnopqrstuvwxyz"
> for(var i =0; i<chars.length; i++) {    
... var char = chars.substr(i, 1);          
... var doc = {char:char, code: char.charCodeAt(0)};
... db.alphabet.save(doc);
... }

此循環將創建 26 個文檔,代表字母表的每個小寫字母,每個文檔包含字符本身及其 ASCII 字符碼。
檢索數據
最後一節,您不僅會學習如何向 MongoDB 數據庫中插入數據,而且會實際學習如何使用最基本的數據檢索函數 find。以上一節結尾時創建的字母表集合爲例,學習使用 find 命令: db.alphabet.find();。

8. 生成響應

> db.alphabet.find()
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8c"), "char" : "a", "code" : 97 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8d"), "char" : "b", "code" : 98 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8e"), "char" : "c", "code" : 99 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8f"), "char" : "d", "code" : 100 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec90"), "char" : "e", "code" : 101 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec91"), "char" : "f", "code" : 102 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec92"), "char" : "g", "code" : 103 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec93"), "char" : "h", "code" : 104 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec94"), "char" : "i", "code" : 105 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec95"), "char" : "j", "code" : 106 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec96"), "char" : "k", "code" : 107 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec97"), "char" : "l", "code" : 108 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec98"), "char" : "m", "code" : 109 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec99"), "char" : "n", "code" : 110 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec9a"), "char" : "o", "code" : 111 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec9b"), "char" : "p", "code" : 112 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec9c"), "char" : "q", "code" : 113 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec9d"), "char" : "r", "code" : 114 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec9e"), "char" : "s", "code" : 115 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec9f"), "char" : "t", "code" : 116 }
has more
>

默認情況下,find() 函數會檢索集合中的所有文檔,但只顯示前 20 個文檔。給出命令 it 將檢索剩餘的 6 個文檔(參見清單 9)。

9. 檢索剩餘的 6 個文檔

> it
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca0"), "char" : "u", "code" : 117 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca1"), "char" : "v", "code" : 118 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca2"), "char" : "w", "code" : 119 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca3"), "char" : "x", "code" : 120 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca4"), "char" : "y", "code" : 121 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca5"), "char" : "z", "code" : 122 }
>

find() 函數實際上向查詢結果集返回了一個指針,在本例中是檢索所有文件。如果沒有分配一個變量或沒有執行其他函數,它將在屏幕上默認打印一個樣例結果集。要顯示所有結果集,應執行以下命令:

> db.alphabet.find().forEach(printjson);
將打印結果集中的每條記錄,而不是顯示一個子集。
查詢數據
MongoDB 最強大的功能之一是它對 ad-hoc 查詢的強大支持,其工作方式與傳統關係數據庫幾乎一樣,它篩選和返回 BSON 文檔而不是表中的行。這種方法使它有別於其他文檔存儲,對於 SQL 開發人員來說,這一點很難掌握。利用 MongoDB ,相對複雜的 SQL 查詢可以簡單地轉換爲 JavaScript 函數調用
基本查詢
find 函數接受一系列參數來篩選返回的結果。例如,在上面創建的字母表集合中,您能用以下命令找到 "char" 屬性的值爲 "q" 的任何記錄:

> db.alphabet.find({char: "o"});
返回以下響應:

{ "_id" : ObjectId("4cfa4adf528bad4e29beec9a"), "char" : "o", "code" : 111 }。
返回編碼小於或等於 100 的所有字符,可以使用以下命令:

> db.alphabet.find({code:{$lte:100}});.
這將返回清單 10 中的結果,與您期望的一致。
10. 結果

{ "_id" : ObjectId("4cfa4adf528bad4e29beec8c"), "char" : "a", "code" : 97 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8d"), "char" : "b", "code" : 98 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8e"), "char" : "c", "code" : 99 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8f"), "char" : "d", "code" : 100

MongoDB 支持各種條件運算符,包括:
$lt (小於)
$lte (小於等於)
$gt (大於)
$gte (大於等於)
$all (匹配數組中的所有值)
$exists (檢查字段是否存在)
$mod (模數)
$ne (不等)
$in (匹配數組一個或多個值)
$nin (匹配數組中的零值)
$or (匹配一個或另一個查詢)
$nor (不匹配查詢)
$size (匹配具有預定數量元素的任何數組)
$type (匹配具有指定 BSON 數據類型的值)
$not (不等於)
使用 find 函數中的第二個參數來限制查詢返回的字段,下面的查詢只返回所有文檔中編碼值範圍在 102 至 105 之間的 char 屬性:

> db.alphabet.find({code:{$in:[102,103,104,105]}}, {char: 1});.
這將產生 清單 11 中的結果。
11 中的結果

{ "_id" : ObjectId("4cfa4adf528bad4e29beec91"), "char" : "f" }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec92"), "char" : "g" }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec93"), "char" : "h" }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec94"), "char" : "i" }/span>

索引
MongoDB 索引與關係數據庫中的索引十分相似。可以基於任何屬性建立索引。此外,索引後的字段可以是任何數據類型,包括一個對象或數組。與 RDBMS 索引相似,可以使用多個屬性創建複合索引,也可創建唯一索引,確保不存在重複的值。
創建一個基本索引,使用 ensureIndex 函數。使用字母表集合中的 code 和 char 屬性創建一個索引12. 創建索引

db.alphabet.ensureIndex({code: 1});
> db.alphabet.ensureIndex({char: 1})

可以使用 dropIndex 和 dropIndexes 函數刪除索引。

排序
要對結果集進行排序,可以對指針應用 sort 函數。字母表集合已經基於 code 和 char 屬性的升序排序,下面按 code 屬性的升序排序,返回一個子集:

> db.alphabet.find({code: {$gte: 118}}).sort({code: 0});
12. 結果

{ "_id" : ObjectId("4cfa4adf528bad4e29beeca5"), "char" : "z", "code" : 122 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca4"), "char" : "y", "code" : 121 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca3"), "char" : "x", "code" : 120 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca2"), "char" : "w", "code" : 119 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beeca1"), "char" : "v", "code" : 118 }

shiy sort 函數提供參數 {code: 1} ,以升序排序。爲確保高效查詢,一定要爲排序的數據屬性添加索引。
使用 skip 和 limit 分頁結果
處理數據結果集時,一次只想檢索一個子集,也許是在網頁上提供分頁結果。在 MongoDB 中只需使用 skip 和 limit 函數即可實現這一功能。要返回字母表集合中的前 5 個文檔,可執行以下操作: > db.alphabet.find().limit(5);
13. 結果

{ "_id" : ObjectId("4cfa4adf528bad4e29beec8c"), "char" : "a", "code" : 97 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8d"), "char" : "b", "code" : 98 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8e"), "char" : "c", "code" : 99 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec8f"), "char" : "d", "code" : 100 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec90"), "char" : "e", "code" : 101 }

要獲得下一頁,使用以下命令: > db.alphabet.find().skip(5).limit(5);
14. 獲取接下來的 5 條記錄

{ "_id" : ObjectId("4cfa4adf528bad4e29beec91"), "char" : "f", "code" : 102 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec92"), "char" : "g", "code" : 103 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec93"), "char" : "h", "code" : 104 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec94"), "char" : "i", "code" : 105 }
{ "_id" : ObjectId("4cfa4adf528bad4e29beec95"), "char" : "j", "code" : 106 }

分組函數和聚合
MongoDB 的查詢引擎也使得對數據應用聚合和分組函數變得非常簡單。這類似於 SQL 中的相應功能。應用最廣泛的函數是 count() 函數:> db.alphabet.find().count();
可以簡單對篩選出的查詢結果進行計數: > db.alphabet.find({code: {$gte: 105}}).count();
另一個有用的聚合函數是 distinct。它可返回針對某個屬性的一組不同的值。由於所有數據都是唯一的,因此字母表集合不是一個合適的例子。我們向本文開頭創建的 colors 集合中添加一些記錄清單

15. 向 color 集合中添加記錄

>db.colors.save({name:"white",value:"FFFFFF"});
> db.colors.save({name:"red",value:"FF0000"});  
> db.colors.find();

假定沒有刪除 colors 集合,將看到 清單 19 中的響應。
16. 響應

{ "_id" : ObjectId("4cfa43ff528bad4e29beec57"), "name" : "red", "value" : "FF0000" }
{ "_id" : ObjectId("4cfa5830528bad4e29beeca8"), "name" : "white", "value" : "FFFFFF" }
{ "_id" : ObjectId("4cfa5839528bad4e29beeca9"), "name" : "red", "value" : "FF0000" }

可以看到,在這個集合中明顯有兩個 red 文檔。現在使用 distinct 函數從此集合中獲得一組唯一的 name 屬性: > db.colors.distinct("name");
返回: [ "red", "white" ]
注意,在執行其他查詢函數時不能在指針和結果集上執行 distinct 函數,而應直接在集合上執行。還應注意,它返回的不是一組文檔,而是一組值。
MongoDB 還爲執行類似於 SQL 中的 GROUP BY 表達式的操作提供了 group 函數。group 函數是一個異常複雜的函數,這裏只給出一個簡短的示例。例如,要按 name 值來分組計算文檔數。在 SQL 中,可以定義表達式爲 SELECT name, COUNT(*) FROM colors GROUP BY name;。
17. 使用 group 函數

db.colors.group(
... {key: {name: true},
... cond: {},
... initial: {count: 0},                                  
... reduce: function(doc, out) { out.count++; }
... });

18. 結果

[
   {
       "name" : "red",
       "count" : 2
   },
   {
       "name" : "white",
       "count" : 1
   }
]

如果要執行高級聚合或使用大型數據集,MongoDB 還包含一個 map/reduce 實現,上面的 group 函數在分片的 MongoDB 安裝中無法工作,所以如果使用分片,要使用 map/reduce 來替代 group 函數。
更新現有數據
在 MongoDB shell 中,更新文檔非常容易。在前面創建的 colors 集合中,有兩條 red 記錄。要從記錄中取出一個並將它更改爲 black,且值屬性爲 000000 (黑色的十六進制值)。首先,可以使用 findOne 函數來檢索值爲 red 的單個項目,根據需要更改其屬性,並將文檔存儲到數據庫中。
獲取名稱爲 red 的單一文檔並把它存儲在 blackDoc 變量中:

> var blackDoc = db.colors.findOne({name: "red"});
用點表示法修改文檔的屬性

19. 修改文檔屬性

> blackDoc.name = "black";
> blackDoc.value = "000000";

在保存之前,檢查文檔是否正確(它應該有 _id 屬性,否則只是插入了一條新記錄而不是覆蓋 red 記錄): > printjson(blackDoc);
20 結果

{
   "_id" : ObjectId("4cfa43ff528bad4e29beec57"),
   "name" : "black",
   "value" : "000000"
}

使用 save 函數將文檔保存回數據庫中的 colors 集合: > db.colors.save(blackDoc);
使用 find 函數來確保集合是正確的: > db.colors.find();
如果有 4 條記錄,您就錯了。
21. 結果

{ "_id" : ObjectId("4cfa43ff528bad4e29beec57"), "name" : "black", "value" : "000000" }
{ "_id" : ObjectId("4cfa5830528bad4e29beeca8"), "name" : "white", "value" : "FFFFFF" }
{ "_id" : ObjectId("4cfa5839528bad4e29beeca9"), "name" : "red", "value" : "FF0000" }

除了 Mongo shell 之外,您可以在應用程序中使用 update 函數來將更改應用到現有數據。刪除數據
要刪除 MongoDB 中的數據,可使用 remove 函數。請注意這適用於 MongoDB shell 程序,某些驅動程序可能使用 delete 函數或者沒有。remove 函數與 find 函數工作方式類似。要刪除 colors 集合中與名稱 white 相匹配的任何文檔,可使用以下命令: > db.colors.remove({name:"white"});

檢查此文檔是否已刪除: > db.colors.find();
22. 刪除數據

{ "_id" : ObjectId("4cfa43ff528bad4e29beec57"), "name" : "black", "value" : "000000" }
{ "_id" : ObjectId("4cfa5839528bad4e29beeca9"), "name" : "red", "value" : "FF0000" }

要刪除集合中的所有文檔,只需在命令中省略篩選器,類似如下: > db.colors.remove();
使用 find 函數,將得不到響應,表示一個空的結果集: > db.colors.find();
如果文檔存儲在變量中,也可以將此文檔傳送給 remove 函數以刪除它,但這麼做非常低效。最好找到這個文檔的 _id 屬性並把它傳送給 remove 函數。
要刪除一個集合,使用以下命令: > db.colors.drop();
返回以下結果: true。
使用 show collections 命令檢查集合確實已被刪除。
23. 使用 show collections 命令
alphabet
system.indexes
最後,如果您想要刪除整個數據庫,執行如下命令:> db.dropDatabase();
將刪除當前選定的數據庫。將看到以下輸出: { "dropped" : "mymongo", "ok" : 1 }.
可以使用 show dbs 命令獲得可用數據庫列表。mymongo 將不會出現在這個列表中。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章