文檔在地址:http://download.csdn.net/detail/wyqlxy/3999890
MongoDB是文檔型資料庫,不是關係型資料庫。基本思路是 將原來的“行” 的概念換成更加靈活的 “文檔“模型。面向文檔的方式可以將文檔或者數組內嵌進來,所以用一條記錄就可以表達複雜的方式。一般作為網路伺服器。
MongoDB沒有模式:文檔的鍵不會事先定義,也不會固定不變。
MongoDB比較容易擴充。需要擴充的時候,只需在叢集中增加機器即可,然後讓資料庫來做剩下的事情。
MongoDB擁有一套獨特的,好用的工具:
1,索引。通過輔助索引,可以更快的進行查詢。也提供唯一的,複合的和地理空間索引能力。
2,儲存JavaScript。可以直接在服務端儲存函數和值。
3,彙總。 支援MapReduce工具和其他彙總工具。
4,固定集合。集合的大小是有上限的。
5,檔案儲存體。支援一種容易使用的協議儲存大型檔案和檔案的中繼資料。
但是也有缺點:比如 聯合的 join 和複雜的多行事務。
儘管MongoDB功能很強大,但是並不具備關係型資料庫的功能。它儘可能將服務端的邏輯交給用戶端(由驅動程式或使用者的應用程式處理),這樣可以使得MongoDB擁有量良好的效能。
MongoDB啟動後,幾乎沒有什麼必要的操作,如果主伺服器掛掉了,會自動切換到備份伺服器上。並且將備份伺服器升為活躍伺服器。
文檔時MongoDB的核心。多個鍵以及關聯的值有序的放置在一起就是文檔。文檔中的值不僅是字串,還有其他的類型。
注意:值不能包含\0.因為這個字元是用來表示鍵的結尾的。2. 點.和$最好不要使用3 ,同樣_最好也不要。系統的預設的一些鍵比如:_index就是用這個開頭的。
MongoDB不但區分類型,也區分大小寫。文檔中不允許有重複的鍵。
集合就是一組文檔。如果說mongodb中的文檔類似關係型資料庫中的行,那個集合就是一張表。集合是無模式的,這就意味著集合裡的文件類型也是各式各樣的。
如: {“firest”: "hello" } {"seconde": 5 }.他們的類型不同,鍵也不同。集合包含子集合。一般用. 表示。比如: blog.content 和blog.authors。
MongoDB內建一個Javascript Shell,可以從命令列與mongodb進行互動。通過它可以執行管理操作,檢查運行執行個體。這個工具很重要。shell是標準的javascript解譯器。shell在啟動時會自動連接MongoDB伺服器,所以在確保首先啟動伺服器,然後在運行shell。它是一個獨立的MongoDB用戶端。SHELL還有一些非javascript的文法擴充。是為了方便習慣sql shell 的使用者。
1,建立
首先建立一個局部變數和相關內容。post ={"title":"my blog" ,"content":"here is my blog","date": new date()}
插入資料: db.blog.indert(post). 在記錄被儲存後,會自動多出一列“_id"。
2,讀取
find會返回集合中所有的文檔。若只想看一個,可也用findone: db.blog.findone(). 這兩者都可以接受查詢的限制條件。
3,更新
update. 他接受至少兩個參數。 例如:修改post變數,增加"comments“鍵
第一步:post.comments=[]
然後執行update操作。db.blog.update({title:"my blog",post}).用新版本的文檔,替換標題為my blog文檔。
4,刪除
remove. 它可以接受參數。永久刪除資料。db.blog.remove({"title":"my blog"}).如果不加參數,則刪除集合內所有文檔。
如果查看資料庫級的協助,可以用db.help(). 有個瞭解函數的技巧,就是輸入的時候不要輸入括弧,這樣就能看到該函數的javascript函數實現方式。