一,開篇分析
這篇屬於擴展知識篇,因為在下面的文章中會用到數據庫操作,所以今天就來說說它(Mongodb模塊)。
(1),簡介
MongoDB是一個基於分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB是一個高性能,開源,無模式的文檔型數據庫,是當前NoSql數據庫中比較熱門的一種。
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")
代碼如下:
var mongodb = require("mongodb") ;
var server = new mongodb.Server("localhost",27017,{
auto_reconnect : true
}) ;
var conn = new mongodb.Db("bb",server,{
safe : true
}) ;
conn.open(function(error,db){
if(error) throw error ;
db.collection("users",{
safe : true
},function(err,collection){
if(err) throw err ;
collection.find().toArray(function(e,docs){
if(e) throw e ;
console.log(docs) ;
}) ;
}) ;
}) ;
運行結果如下:
代碼如下:
[
{
_id: 54b3ce920dc20a3ba9607f
name: 'bigbear',
password: '12345678'
}
]
四,總結一下
(1),熟練使用MongoDB數據庫。
(2),理解與關系型數據庫之間的差異化。
(3),通過上述的例子,掌握NodeJS如何操作MongoDB。
(4),強調一句話:如何設計“NoSQL”類型的數據庫,思想很重要。