MongoDB 將文檔存儲在集合中。集合類似於關系數據庫中的表。如果集合不存在,則 MongoDB 會在第一次存儲該集合數據時創建該集合。
MongoDB 集合的命名規則
MongoDB 的集合就相當於 MySQL 的一個表 table,MySQL 列出的所有表都可以使用 show tables,MongoDB 可以使用 show collections 展示所有集合。
集合是一組文檔,是無模式的,集合名稱要求符合 UTF-8 標准的字符串,同時要遵循下表所示的注意事項。
序號 | 注意事項 |
---|---|
1 | 集合名不能是空串 |
2 | 不能含有空字符 \0 |
3 | 不能以“system.”開頭,這是系統集合保留的前綴 |
4 | 集合名不能含保留字符“$” |
對於分別部署在 Windows、Linux、UNIX 系統上的 MongoDB,集合的命名方式與數據庫命名方式一致。
創建集合
MongoDB 集合的創建有顯式和隱式兩種方法。
顯式創建集合可通過使用db.createCollection(name, options)
方法來實現,參數 name 指要創建的集合名稱,options 是可選項,指定內存大小和索引等,下表描述 了 options 可使用的選項。
參數 | 類型 | 描述 |
---|---|---|
capped | Boolean | (可選)如果為 true,則啟用封閉的集合。上限集合是固定大小的集合,它在達到其最大時自動覆蓋其最舊的條目。如果指定 true,則還需要指定 size 參數 |
size | 數字 | (可選)指定上限集合的最大大小(以字節為單位)。如果 capped 為 true,那么還需要指定此字段的值 |
max | 數字 | (可選)指定上限集合中允許的最大文檔數 |
注意:在插入文檔時,MongoDB 首先檢查上限集合 size字段的大小,然后檢查 max 字段。
顯式創建集合的一個例子:
> use myDB switched to db myDB > > show dbs admin 0.000GB config 0.000GB local 0.000GB > > db.createCollection("myColl") // 在myDB數據庫中創建集合 myColl { "ok" : 1 }
在 MongoDB 中,當插入文檔時,如果集合不存在,則 MongoDB 會隱式地自動創建集合,方法如下:
> db.myColl2.insert({"name":"tom"}) // myColl2是集合名 WriteResult({ "nInserted" : 1 }) > > show collections // 查看此時的所有集合 myColl myColl2
可以看到顯示和隱式創建的集合...
之前提到過創建的數據庫如果沒有值的時候使用show dbs不會顯示, 現在myDB數據庫中已經有集合了, 再次查看
> show dbs admin 0.000GB config 0.000GB local 0.000GB myDB 0.000GB
下面是帶有幾個關鍵參數的 createCollection() 的用法:
創建固定集合 myColl3,整個集合空間大小 6142800 KB, 文檔最大個數為 10000 個。
> db.createCollection("myColl3", {capped:true, size:6142800, max:10000}) { "ok" : 1 } > > show collections myColl myColl2 myColl3