要說MongoDB就不能不先說NoSQL。關於NoSQL,推薦互連網上的兩篇文章: 1.http://www.iteye.com/topic/524977 By 範凱。這篇文章詳細介紹了NoSQL產生的背景,以及主流的NoSQL產品及其特點分析。 2.http://sebug.net/paper/databases/nosql/Nosql.html By 顏開。這篇文章介紹了NoSQL基本思想、基礎支撐理論、典型代表產品及特點、目前的應用案例等。在篇文章算是中文資料中比較全面的一篇。非常推薦。。。 關於MongoDB的介紹,可以自己Google,或者直接去MongoDB的官網:http://www.mongodb.org/ ,這裡就不贅述了。 下面重點說說兩方面:安裝以及基本使用(CRUD) 一、MongoDB的安裝 1.Linux、MacOS下的安裝 1.1 建立資料存放目錄,以便存放MongoDB的資料檔案,預設情況下,該目錄是/data/db。然後給使用者賦予對該目錄的讀寫權限。我們可以通過更改該目錄的所有者來實現。在終端中輸入以下命令:1mkdir -p /data/db2chown -R $USER:$USER /data/db 1.2 從官網下載壓縮包之後進行解壓,並且進入解壓後的目錄(XXX代表具體的版本號碼):1tar zxf mongodb-linux-i686-XXX.tar.gz2cd mongodb-linux-i686-XXX 1.3 啟動資料庫:1bin/mongod 安裝過程比較簡單。 二、MongoDB基本操作 2.1 基本概念介紹: 文檔:一系列索引值對有序的排列在一起就形成文檔。文檔是MongoDB的核心概念之一。下面就是一個文檔:1{"name":"wawlian","age":23} 需要注意的是,上面的兩對索引值對之間是有序的,換句話說順序不允許打亂。這一點是文檔的定義規定的。 文檔的鍵一般是字串,但是值可以使很多種類型,字串、布爾值、數字型等等。另外,MongoDB是區分大小寫哦。 集合:集合是若干文檔的集合,類似於傳統資料庫中的表,文檔則類似與傳統資料庫的記錄(表中的行)。這裡這麼說只是起到一個初學時的類比記憶。集合和傳統資料庫的表還是不一樣的。集合是無模式的,也就是說,集合不要求其中的文檔有相同的數目的索引值對,也不要求所有的鍵對應相等。這麼說可能有點抽象,看個例子:1{"name":"wawlian","age":23} 2{"language":"Chinese"} 這兩個形式完全不一樣的文檔是允許存在於一個集合中的。 資料庫:資料庫的概念也類似於資料庫,或者說類似於Oracle中的schema。多個不同的集合構成一個資料庫。一個MongoDB的執行個體可以載入多個不同的資料庫,他們之間完全獨立。 2.2 啟動和串連MongoDB 啟動MongoDB前面我們已經在安裝中說過,只需要在終端中輸入:1./mongod 正常啟動的輸出大概是這樣子的,當然不同版本之間可能有略微差距:1Thu Dec 1 22:49:22 [initandlisten] MongoDB starting : pid=281 port=27017 dbpath=/data/db/ 64-bit host=jerryMacBookhome.local2Thu Dec 1 22:49:22 [initandlisten] db version v2.0.1, pdfile version 4.53Thu Dec 1 22:49:22 [initandlisten] git version: 3a5cf0e2134a830d38d2d1aae7e88cac31bdd6844Thu Dec 1 22:49:22 [initandlisten] build info: Darwin erh2.10gen.cc 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386 i386 BOOST_LIB_VERSION=1_405Thu Dec 1 22:49:22 [initandlisten] options: {}6Thu Dec 1 22:49:22 [initandlisten] journal dir=/data/db/journal7Thu Dec 1 22:49:22 [initandlisten] recover : no journal files present, no recovery needed8Thu Dec 1 22:49:23 [websvr] admin web console waiting for connections on port 28017 下面就是串連到MongoDB伺服器了。我們知道,MySQL可以通過1mysql -uroot -p 命令串連到MySQL伺服器,Oracle可以通過1sqlplus user/passwd 同樣,MongoDB也有這樣的工具。MongoDB提供了一個JavaScript Shell,可以從它和MongoDB進行互動。運行該shell:1./mongo 成功串連的輸出如下:1jerryMacBookhome:~ jerry$ mongo2MongoDB shell version: 2.0.13connecting to: test shell是一個JavaScript解譯器,可以運行任何JavaScript程式。當然這不是我們關注的重點。我們關注的是怎麼在MongoDB中完成基本的CRUD操作。 2.3 基本CRUD操作 在進行操作之前,還需要補充一點基本知識。MongoDB中會使用一個變數db儲存當前使用的資料庫。我們串連到MongoDB資料庫,預設會串連到test資料庫。如果需要換到別的資料庫,可以使用use dbname命令:1> use foobar2switched to db foobar 2.3.1 Create:建立 我們假設需要在Persons集合中儲存人員資訊(姓名、年齡、資訊儲存日期)。可以先建立一個JS對象,然後將它插入資料庫對應集合:1> p = {"name":"wawlian","age":23,"CDate":new Date()};2{3 "name" : "wawlian",4 "age" : 23,5 "CDate" : ISODate("2011-12-01T17:13:45.671Z")6}7> db.Persons.insert(p); 上面{}中的部分是執行上一條指令的輸出。這個人員資訊已經儲存進去了。此外,我們之前並未建立集合Persons,這是我們在儲存人員資訊時根據命令,mongodb自己為我們建立的。 2.3.2 Retrieve:檢索 可以通過調用集合的find()方法查詢所有記錄:1> db.Persons.find();2{ "_id" : ObjectId("4ed7b5ce4f33e90801872724"), "name" : "wawlian", "age" : 23, "CDate" : ISODate("2011-12-01T17:13:45.671Z") } 我們之前插入的記錄已經查看到了。我們發現,多出了一個索引值對:_id/ObjectId。這是MongoDB為每個文檔添加的唯一標識。 2.3.3 Update:更新 更新使用的是集合的update()方法。當然,既然要更新,總得讓資料庫知道該更新誰吧。所以這個方法有兩個參數:更新條件、新的文檔。直接看代碼:1> db.Persons.update({"name":"wawlian"},{"name":"xiaobai","age":"18"});2> db.Persons.find();3{ "_id" : ObjectId("4ed7b5ce4f33e90801872724"), "name" : "xiaobai", "age" : "18" } 上面的代碼是將"name"為"wawlian"的文檔替換為後一個文檔。 2.3.4 Delete:刪除 刪除文檔只需要使用集合的remove()方法。remove()方法需要傳遞一個參數:刪除條件。這一點與上面的update()方法類似。1> db.Persons.remove({"name":"xiaobai"});2> db.Persons.find(); 刪除之後再查看記錄已經沒有了。 以上是MongoDB的入門學習。隨著學習的繼續,我還會進一步介紹MongoDB。