1. 程式人生 > 其它 >1.MongoDB基本介紹

1.MongoDB基本介紹

1.基本概念

  • 文件是Mongodb中基本資料單元,可以粗略地認為其相當於關係型資料庫中的行(但表達力要強的多)
  • 集合類似於關係資料庫中的表
  • 一個Mongodb例項可以擁有多個獨立的資料庫,每個資料庫都擁有自己的集合
  • 每個文件都有一個特殊的鍵'_id',在其所屬的集合中是唯一的。

2.資料型別

  Mongodb中的文件可以被認為是一種'類似於"JSON"的形式,因此有僅僅有6中資料型別。有null/布林值/數字/字串/陣列/物件這幾種型別。

  2.1 null型別 

  null型別用於表示空值或不存在的欄位   --->  {"x" : null}

  2.2 布林型別

  布林型別的值可以為true或者false       --->   {"x" : true}

  2.3 資料型別

  shell預設使用64位浮點數來表示數值型別。因此,下面的資料在shell中看起來是“正常的”  ---> {"x" : 3.14}   {"x" : 3}

  對於整數,可以使用NumberInt或者Numberlog類,它們分別表示4位元組和8位元組的有號整數   ---> {"x" : Number("3")}    {"x" : Numberlong("3")}

  2.4字串型別

  任何UTF-8字串都可以使用字串型別來表示。 {"x" : "foobar"}

  2.5 日期型別

  mongodb會將日期儲存為64為整數,表示子unix紀元(1970年1月1日)以來的毫秒數,不包含時區資訊。---> {"x" : new.Date()}

  2.6 正則表示式

  查詢可以使用正則表示式,語法與javascript的正則表示式語法相同.  ---> {"x" : /foobar/i}

  2.7 陣列型別

  集合或者列表可以表示陣列    ---> {"x": ["a","b","c"]}

  2.8內嵌文件

  文件可以巢狀其他文件,此時被巢狀的文件就成了父文件的值    --->{"x" : {"foo" : "bar"}}

  2.9 ObjectID

  Object ID是一個12位元組的ID,是文件的唯一標識   ----> {"x" : ObjectId()}

 

這裡說說內嵌文件型別和ObjectId

1.內嵌文件

{

    {
          "name" : "John",
          "address" :{
                 "street" : "123 Park Street",
                 "city"    : "Anytown",
                 "state"  : "NY"
            }   
    }
}        

  在這裡,“address”鍵的值是一個內嵌文件,它有自己的“street”、和state鍵-值對。與陣列一樣

2.ObjectId和_id

  mongodb中儲存的每個文件都必須有一個“_id"鍵。”_id“的值可以是任何型別,但其預設為objectId。在單個集合中,每個文件"_id"值都必須是唯一的,以確保集合中每個文件都可以被唯一標識,也就是說,如果你有兩個集合,那麼每個集合都可以有一個"_id"值為123的文件。但是,每個集合裡面均只能有一個文件的”_id“值可以為123.

    2.1 objectId

  ObjectId是”_id“的預設型別。objectId採用了輕量化設計,可以很容易地在不同的機器上以全域性唯一的方式生成。Mongodb的分散式特性是它使用objectid而不是其他傳統做法(比如自動遞增主鍵)的主要原因:跨多個伺服器同步自動遞增主鍵既困難又耗時。因為mongodb的設計初衷就是作為一個分散式資料庫,所以能夠在分片環境中生成唯一的識別符號非常重要。