MongoDB 數據庫,對象,集合

MongoDB 數據庫,對象,集合

標籤(空格分隔): MongoDB


數據庫

一個mongodb中可以建立多個數據庫。

MongoDB的默認數據庫爲”db”,該數據庫存儲在data目錄中。

在MongoDB中可以創建數據庫,如果你想使用MongoDB,創建數據庫不是必要的。

“show dbs” 命令可以顯示所有數據的列表。

    C:\Users\bin>mongo
    MongoDB shell version: 3.0.2
    connecting to: test
    > show dbs
    admin  0.078GB
    db     0.078GB
    local  0.078GB
    test   0.078GB
    >

執行 “db” 命令可以顯示當前數據庫對象或集合。


> db
test
>

運行”use”命令,可以連接到一個指定的數據庫。

> use local
switched to db local
> 

注意:

  1. 數據庫名稱可以是任何字符,但是不能包含空字符串,點號(.),或者” “。
  2. “system” 作爲系統保留字符串不能作爲數據庫名。
  3. 數據庫名不能包含 “$”。

文檔

文檔是mongodb中的最核心的概念,是其核心單元,我們可以將文檔類比成關係型數據庫中的每一行數據。

多個鍵及其關聯的值有序的放置在一起就是文檔。在mongodb中使用一種類json的bson存儲數據。

MongoDB中對文檔的區分包括:鍵值對的順序,鍵和值的類型,鍵和值的大小寫。在兩個文檔中如果這三者有任何一個不一致,這兩個文檔就不相同。文檔中鍵值對的“值”的數據類型甚至還可以是整個嵌入的文檔,“鍵”則只能是字符串。

文檔例子如下:

 { name : "zhang" }

通常,”object(對象)” 術語是指一個文件。

文件類似於一個RDBMS的記錄。

我們可以對集合(collection)進行插入,更新和刪除操作。

下表將幫助您更容易理解Mongo中的一些概念:

RDBMS MongoDB
Table(表) Collection(集合)
Column(欄) Key(鍵)
Value(值) Value(值)
Records / Rows(記錄/列) Document / Object(文檔/對象)

下表爲MongoDB中常用的幾種數據類型。

數據類型 描述
string(字符串) 可以是一個空字符串或者字符組合。
integer(整型) 整數。
boolean(布爾型) 邏輯值 True 或者 False。
double 雙精度浮點型
null 不是0,也不是空。
array 數組:一系列值
object 對象型,程序中被使用的實體。可以是一個值,變量,函數,或者數據結構。
timestamp timestamp存儲爲64爲的值,只運行一個mongod時可以確保是唯一的。前32位保存的是UTC時間,單位是秒,後32爲是在這一秒內的計數值,從0開始,每新建一個MongoTimestamp對象就加一。
Internationalized Strings UTF-8 字符串。
Object IDs 在mongodb中的文檔需要使用唯一的關鍵字_id來標識他們。幾乎每一個mongodb文檔都使用_id字段作爲第一個屬性(在系統集合和定容量集合(capped collection)中有一些例外)。_id值可以是任何類型,最常見的做法是使用ObjectId類型。

集合

集合就是一組文檔的組合。如果將文檔類比成數據庫中的行,那麼集合就可以類比成數據庫的表。

在mongodb中的集合是無模式的,也就是說集合中存儲的文檔的結構可以是不同的,比如下面的兩個文檔可以同時存入到一個集合中:

{"name":"zhang"} {"Name":"zhang","sex":"nan"}

當第一個文檔插入時,集合就會被創建。

capped collections

Capped collections 就是固定大小的collection。

它有很高的性能以及隊列過期的特性(過期按照插入的順序). 有點和 “RRD” 概念類似。

Capped collections是高性能自動的維護對象的插入順序。它非常適合類似記錄日誌的功能 和標準的collection不同,你必須要顯式的創建一個capped collection, 指定一個collection的大小,單位是字節。collection的數據存儲空間值提前分配的。

要注意的是指定的存儲大小包含了數據庫的頭信息。

> db.createCollection("mycoll", {capped:true, size:100000})
{ "ok" : 1 }
>
  • 在capped collection中,你能添加新的對象。
  • 能進行更新,然而,對象不會增加存儲空間。
  • 如果增加,更新就會失敗 。
  • 數據庫不允許進行刪除。
> db.mycoll.insert({"name":"zhang"})
WriteResult({ "nInserted" : 1 })
> db.mycoll.remove({"name":"zhang"})
WriteResult({
        "nRemoved" : 0,
        "writeError" : {
                "code" : 20,
                "errmsg" : "cannot remove from a capped collection: test.mycoll"
        }
})
>
  • 使用drop()方法刪除collection所有的行。
  • 注意: 刪除之後,你必須顯式的重新創建這個collection。
  • 在32bit機器中,capped collection最大存儲爲1e9( 1X109)個字節。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章