標籤:blog http color io os 使用 java ar strong
原文地址:http://blog.csdn.net/drifterj/article/details/7948090
目錄位址:http://blog.csdn.net/DrifterJ/article/category/1191327/2
前面我們都是通過shell來操作存取MongoDB的資料,shell中使用的語言就是javascript。我們這次說一下如何通過Java來訪問操作MongoDB資料庫的。
Java驅動程式是MongoDB最早的驅動,已用於生產環境很長時間,十分穩定。可以到MongoDB官方網站下載驅動,我的資源中也有,驅動版本為2.9.0。
這個jar檔案中,有兩個包,我們會經常用到com.mongodb 和 com.mongodb.gridfs 。在Java中操作MongoDB,各種概念和shell中類似,幾乎所有的方法名也都一致,我們先看個簡單的例子吧:
[java] view plaincopy
- package cn.test;
-
- import java.net.UnknownHostException;
-
- import com.mongodb.BasicDBObject;
- import com.mongodb.DB;
- import com.mongodb.DBCollection;
- import com.mongodb.DBObject;
- import com.mongodb.Mongo;
-
- public class Test {
-
- public static void main(String[] args) throws UnknownHostException {
-
- /**
- * Mongo類代表與MongoDB伺服器的串連,有多種建構函式。無參建構函式預設串連localhost:27017.
- */
- Mongo connection = new Mongo("localhost:20000");
- /**
- * DB類代表資料庫,如果當前伺服器上沒有該資料庫,會預設建立一個
- */
- DB db = connection.getDB("mylearndb");
- /**
- * DBCollection代表集合,如果資料庫中沒有該集合,會預設建立一個
- */
- DBCollection users = db.getCollection("users");
- /**
- * DBObject代表文檔,這是一個介面,java中提供了多種實現,最簡單的就是BasicDBObject了
- */
- DBObject user = new BasicDBObject();
- user.put("name", "jimmy");
- user.put("age", "34");
- DBObject address = new BasicDBObject();
- address.put("city", "bj");
- address.put("street", "bq road");
- address.put("mail", "ufpark 68#");
- /**
- * 對於內嵌文檔,我們需要先將內嵌文檔填充後,再填充到外層文檔中!
- */
- user.put("address", address);
- // 將該文檔插入到集合中
- users.insert(user);
- // 從集合中查詢資料,我們就查詢一條,調用findOne即可
- DBObject dbUser = users.findOne();
- System.out.println("name" + " : " + dbUser.get("name") );
- System.out.println("age" + " : " + dbUser.get("age") );
- DBObject dbAddress = (DBObject)user.get("address");
- System.out.println("city" + " : " + dbAddress.get("city") );
- System.out.println("street" + " : " + dbAddress.get("street") );
- System.out.println("mail" + " : " + dbAddress.get("mail") );
-
- }
-
- }
輸出結果為:
[java] view plaincopy
- name : jimmy
- age : 34
- city : bj
- street : bq road
- mail : ufpark 68#
從上述例子,我們可以看出,利用Java驅動操作MongoDB和shell中操作方式是十分相似的,Java中操作更具有OO的特徵。
我們這裡稍微提一下上面注釋中,解釋的文檔類。Java驅動中文檔必須是DBObject介面類型,這個介面可以認為是一個有序地java.util.Map。Java驅動中有提供了很多實現,我們上例中採用了最簡單的BasicDBObject。
【向集合中儲存數組】
MongoDB集合中的索引值對的值支援數組,在shell中,我們通過[],來表示數組,那Java驅動中如何表示數組呢?在Java驅動中,java.util.List類型的對象,都可以表示MongoDB中的數組!我們看一個例子:
[java] view plaincopy
- package cn.test;
-
- import java.net.UnknownHostException;
- import java.util.ArrayList;
- import java.util.List;
-
- import com.mongodb.BasicDBObject;
- import com.mongodb.BasicDBObjectBuilder;
- import com.mongodb.DB;
- import com.mongodb.DBCollection;
- import com.mongodb.DBObject;
- import com.mongodb.Mongo;
-
- public class Test1 {
-
- public static void main(String[] args) throws UnknownHostException {
-
- /**
- * Mongo類代表與MongoDB伺服器的串連,有多種建構函式。無參建構函式預設串連localhost:27017.
- */
- Mongo connection = new Mongo("localhost:20000");
- /**
- * DB類代表資料庫,如果當前伺服器上沒有該資料庫,會預設建立一個
- */
- DB db = connection.getDB("mylearndb");
- /**
- * DBCollection代表集合,如果資料庫中沒有該集合,會預設建立一個
- */
- DBCollection fruitShop = db.getCollection("fruitshop");
- /**
- * 建立水果店文檔對象
- */
- DBObject shop1 = new BasicDBObject();
- shop1.put("name", "The Fruit King");
- /**
- * 水果店內水果儲存在一個內嵌文檔的數組中,格式為:
- * [{"name" : "apple", "quality" : "good", "price" : "5.6"},
- * {"name" : "orange", "quality" : "normal", "price" : "1.5"},
- * ......]
- */
- // 數組通過List表示
- List<DBObject> fruits = new ArrayList<DBObject>();
- // 數組中的每一個文檔,我們通過BasicDBObjectBuilder來構造
- fruits.add(BasicDBObjectBuilder.start().add("name", "apple").add("quality", "good").add("price", "5.6").get());
- fruits.add(BasicDBObjectBuilder.start().add("name", "orange").add("quality", "normal").add("price", "1.5").get());
- shop1.put("fruits", fruits);
-
- fruitShop.insert(shop1);
-
- }
-
- }
我們通過Shell串連到資料庫上,直觀地看看資料庫中集合內的資料:
[javascript] view plaincopy
- > use mylearndb;
- switched to db mylearndb
- > db.fruitshop.find();
- { "_id" : ObjectId("504c26fed9005e6e410c5979"), "name" : "The Fruit King", "frui
- ts" : [ { "name" : "apple", "quality" : "good", "price"
- : "5.6" }, { "name" : "orange", "quality" : "normal", "price"
- : "1.5" } ] }
- >
以上就是利用Java驅動操作MongoDB的一個簡單樣本,使用Java驅動操作MongoDB很簡單,大家實際使用中對於API可以參照MongoDB提供的官方文檔。
下面的連結就是2.9.0版驅動對應的API文檔:
http://api.mongodb.org/java/2.9.0/
學習MongoDB--(11):應用舉例(利用java操作MongoDB)