一,開篇分析mongodb
這篇屬於擴展知識篇,由於在下面的文章中會用到數據庫操做,因此今天就來講說它(Mongodb模塊)。shell
(1),簡介數據庫
MongoDB是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。npm
MongoDB是一個高性能,開源,無模式的文檔型數據庫,是當前NoSql數據庫中比較熱門的一種。json
MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。他支持的數據結構很是鬆散,是相似json的bjson格式,所以能夠存儲比較複雜的數據類型。Mongo最大的特色是他支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。瀏覽器
傳統的關係數據庫通常由數據庫(database)、表(table)、記錄(record)三個層次概念組成,MongoDB是由數據庫(database)、集合(collection)、文檔對象(document)三個層次組成。服務器
MongoDB對於關係型數據庫裏的表,可是集合中沒有列、行和關係概念,這體現了模式自由的特色。網絡
(2),特色數據結構
它的特色是高性能、易部署、易使用,存儲數據很是方便。主要功能特性有:分佈式
1)面向集合存儲,易存儲對象類型的數據。
2)模式自由。
3)支持動態查詢。
4)支持徹底索引,包含內部對象。
5)支持查詢。
6)支持複製和故障恢復。
7)使用高效的二進制數據存儲,包括大型對象(如視頻等)。
8)自動處理碎片,以支持雲計算層次的擴展性。
9)支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
10)文件存儲格式爲BSON(一種JSON的擴展)。
11)可經過網絡訪問。
(3),安裝及使用
1,下載並解壓 "mongodb" 到指定目錄,以下:
2,其中有兩個最重要的文件:」Mongod.exe「和」Mongo.exe「 。
Mongod.exe ------ 用來鏈接到mongo數據庫服務器的,即服務器端。
Mongo.exe ------ 用來啓動MongoDB shell的,即客戶端。
二,分步驟操做
(1),新建一個目錄,例如:」>mongod -dbpath data/db「 。
(2),打開瀏覽器輸入:「http://127.0.0.1:27017/」,見到以下字樣:
"You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number",表示已成功。
到此,MongoDB數據庫服務已經成功啓動了。
(3),建立數據庫------進入CMD,鍵入命令「mongo.exe」 出現以下界面:
(4),在shell 命令窗口鍵入以下命令:" use bb" (use 命令用來切換當前數據庫,若是該數據庫不存在,則會先新建一個)。
(5),在shell 命令窗口鍵入以下命令:「 db.users.insert({"name":"bigbear","password":"12345678"})」,
(這條命令是向users 集合中插入一條數據,若是集合users不存在,則會先新建一個,而後再插入數據,參數以JSON格式傳入)。
(6),在shell 命令窗口鍵入以下命令:「db.users.find()」 (顯示users集合下的全部數據文檔),以下圖:
注意圖中的「_id」,系統給每條記錄自動分配了一個唯一主鍵 _id 。
好了!基本的功可以用了,後面若是須要額外的操做逐步補充,因爲篇幅有限主要說的是NodeJS操做Mongodb,因此暫時告一段落。
三,進入主題,實例分析
(1),npm install mongodb (下載後放入制定目錄下)。
(2),以前咱們已經創建好了數據庫和集合("bb","users")
1 var mongodb = require("mongodb") ; 2 var server = new mongodb.Server("localhost",27017,{ 3 auto_reconnect : true 4 }) ; 5 var conn = new mongodb.Db("bb",server,{ 6 safe : true 7 }) ; 8 conn.open(function(error,db){ 9 if(error) throw error ; 10 db.collection("users",{ 11 safe : true 12 },function(err,collection){ 13 if(err) throw err ; 14 collection.find().toArray(function(e,docs){ 15 if(e) throw e ; 16 console.log(docs) ; 17 }) ; 18 }) ; 19 }) ;
運行結果以下:
1 [ 2 { 3 _id: 54b3ce920dc20a3ba9607f 4 name: 'bigbear', 5 password: '12345678' 6 } 7 ]
四,總結一下
(1),熟練使用MongoDB數據庫。
(2),理解與關係型數據庫之間的差別化。
(3),經過上述的例子,掌握NodeJS如何操做MongoDB。
(4),強調一句話:如何設計「NoSQL」類型的數據庫,思想很重要。
哈哈哈,本篇結束,未完待續,但願和你們多多交流夠溝通,共同進步。。。。。。呼呼呼……(*^__^*)