標籤:
資料庫
一個mongodb中可以建立多個資料庫。
MongoDB的預設資料庫為"db",該資料庫儲存在data目錄中。
在MongoDB中可以建立資料庫,如果你想使用MongoDB,建立資料庫不是必要的。
"show dbs" 命令可以顯示所有資料的列表。
[email protected]:~$ mongoMongoDB shell version: 2.0.4connecting to: test> show dbsNewsDB0.203125GBlocal(empty)>
執行
"db" 命令可以顯示當前資料庫物件或集合。
[email protected]:~$ mongoMongoDB shell version: 2.0.4connecting to: test> dbtest>
運行"use"命令,可以串連到一個指定的資料庫。
[email protected]:~$ mongoMongoDB shell version: 2.0.4connecting to: test> dbtest> use NewsDBswitched to db NewsDB> dbNewsDB>
資料庫名稱可以是任何字元,但是不能包含Null 字元串,點號(.),或者" "。
"system" 作為系統保留字元串不能作為資料庫名。
資料庫名不能包含 "$"。
文檔
文檔是mongodb中的最核心的概念,是其核心單元,我們可以將文檔類比成關係型資料庫中的每一行資料。
多個鍵及其關聯的值有序的放置在一起就是文檔。在mongodb中使用一種類json的bson儲存資料。
bson資料可以理解為在json的基礎上添加了一些json中沒有的資料類型。
如果我們會json,那麼bson我們就已經掌握了一半了,至於新添加的資料類型後面我會介紹。
文檔例子如所示,這個是我利用爬蟲從網易新聞上抓下來的資訊,儲存到資料庫中。
{"_id" : ObjectId("557a46d86e530e0e770001e4"),"from_url" : "http://tech.163.com/","news_body" : ["6月3日-北京,第七屆雲端運算大會期間,北京雲端時代公司題為“新案頭 新生態 新價值”的2015案頭雲生態鏈大會在國家會議中心成功召開。","大會現場,雲端時代總經理蔣建平先生以實際案例向現場嘉賓剖析了當前案頭雲行業面臨的共性問題及挑戰,以及如何通過應用情境的歸類及標準化、情境需求組合的標準化,安裝部署的標準化、交付工具的標準化,攜手生態鏈夥伴以“案頭雲”的“工業4.0”思路來共同應對行業共性難題,提升企業IT價值。","會上,雲端時代總經理蔣建平先生提出的構建案頭雲生態鏈,實現應用情境標準化、生態整合(產品認證和最佳化標準化)、產品形態整合標準化、部署整合標準化、裝置上線標準化、資源擴充標準化等提法不僅令現場聽眾耳目一新,深受啟發,而且受到生態鏈夥伴的一致認同。","中科曙光、360、H3C、愛數軟體、吉大正元作為雲端時代案頭雲生態鏈核心戰略夥伴均派代表做了重要演講並參與了圓桌論壇的討論。從左至右分別是:曙光資訊 雲端運算產品事業部總經理 何牧君,360 雲安全事業部副總經理 張曉兵,H3C 市場部、解決方案部部長 王東海,吉大正元 副總經理 朱明達,愛數軟體 產品副總裁 吳米香","此外,來自雲端時代案頭雲生態鏈系統的多家IT廠商在現場也就“軟體國產化”、“產業互連網”、“工業4.0”等熱點議題展開了熱烈討論。","會議現場布置了20個產品體驗台,集中展示雲端時代整合了生態鏈廠商產品的統一管理入口網站產品以及全系列雲端軟硬體一體產品。參會者可以動手操作,親自體驗雲端時代案頭雲產品的主要功能和效能模組。在產品示範過程和使用者親身體驗過程中,雲端時代的案頭雲產品以其精美的圖形設計、高清視頻、最佳化的儲存和複雜外設支援等重負載應用方面的卓越性和領先性,得到了使用者們的肯定。"],"news_from" : "網易科技報道","news_thread" : "AR99BQAF00094P25","news_time" : "2015-06-04 14:43:47","news_title" : "2015雲端時代案頭雲生態鏈大會成功召開","news_url" : "http://tech.163.com/15/0604/14/AR99BQAF00094P25.html"}
通常,"object(對象)" 術語是指一個檔案。
檔案類似於一個RDBMS的記錄。
我們可以對集合(collection)進行插入,更新和刪除操作。
下表將協助您更容易理解Mongo中的一些概念:
RDBMS |
MongoDB |
Table(表) |
Collection(集合) |
Column(欄) |
Key(鍵) |
Value(值) |
Value(值) |
Records / Rows(記錄/列) |
Document / Object(文檔/對象) |
下表為MongoDB中常用的幾種資料類型。
資料類型 |
描述 |
string(字串) |
可以是一個Null 字元串或者字元組合。 |
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":"jingdong"} {"Name":"jingdong","sex":"man"}
合法的集合名
集合名稱必須以字母或底線開頭。
集合名可以保護數字
集合名稱不能使美元符"$","$"是系統保留字元。
集合的名字 最大不能超過128個字元 。
另外,"."號的使用在集合當中是允許的,它們被成為子集合(Subcollection);比如你有一個blog集合,你可以使用blog.title,blog.content或者blog.author來幫組你更好地組織集合。
如下執行個體:
db.tutorials.php.findOne()
capped collections
Capped collections 就是固定大小的collection。有點環形隊列的意思。
它有很高的效能以及隊列到期的特性(到期按照插入的順序). 有點和 "RRD" 概念類似。
Capped collections是高效能自動的維護對象的插入順序。它非常適合類似記錄日誌的功能 和標準的collection不同,你必須要顯式的建立一個capped collection, 指定一個collection的大小,單位是位元組。collection的資料存放區空間值提前分配的。
要注意的是指定的儲存大小包含了資料庫的頭資訊。
db.createCollection("mycoll", {capped:true, size:100000})
- 在capped collection中,你能添加新的對象。
- 能進行更新,然而,對象不會增加儲存空間。如果增加,更新就會失敗 。
- 資料庫不允許進行刪除。使用drop()方法刪除collection所有的行。
- 注意: 刪除之後,你必須顯式的重新建立這個collection。
- 在32bit機器中,capped collection最大儲存為1e9( 1X109)個位元組。
菜鳥的mongoDB學習---(二)MongoDB 資料庫,對象,集合