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的設計初衷就是作為一個分散式資料庫,所以能夠在分片環境中生成唯一的識別符號非常重要。