學習MongoDB--(11):應用舉例(利用java操作MongoDB)

來源:互聯網
上載者:User

標籤: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
  1. package cn.test;  
  2.   
  3. import java.net.UnknownHostException;  
  4.   
  5. import com.mongodb.BasicDBObject;  
  6. import com.mongodb.DB;  
  7. import com.mongodb.DBCollection;  
  8. import com.mongodb.DBObject;  
  9. import com.mongodb.Mongo;  
  10.   
  11. public class Test {  
  12.   
  13.     public static void main(String[] args) throws UnknownHostException {  
  14.           
  15.         /** 
  16.          * Mongo類代表與MongoDB伺服器的串連,有多種建構函式。無參建構函式預設串連localhost:27017. 
  17.          */  
  18.         Mongo connection = new Mongo("localhost:20000");  
  19.         /** 
  20.          * DB類代表資料庫,如果當前伺服器上沒有該資料庫,會預設建立一個 
  21.          */  
  22.         DB db = connection.getDB("mylearndb");  
  23.         /** 
  24.          * DBCollection代表集合,如果資料庫中沒有該集合,會預設建立一個 
  25.          */  
  26.         DBCollection users = db.getCollection("users");  
  27.         /** 
  28.          * DBObject代表文檔,這是一個介面,java中提供了多種實現,最簡單的就是BasicDBObject了 
  29.          */  
  30.         DBObject user = new BasicDBObject();  
  31.         user.put("name", "jimmy");  
  32.         user.put("age", "34");  
  33.         DBObject address = new BasicDBObject();  
  34.         address.put("city", "bj");  
  35.         address.put("street", "bq road");  
  36.         address.put("mail", "ufpark 68#");  
  37.         /** 
  38.          * 對於內嵌文檔,我們需要先將內嵌文檔填充後,再填充到外層文檔中! 
  39.          */  
  40.         user.put("address", address);  
  41.         // 將該文檔插入到集合中  
  42.         users.insert(user);  
  43.         // 從集合中查詢資料,我們就查詢一條,調用findOne即可  
  44.         DBObject dbUser = users.findOne();  
  45.         System.out.println("name" + " : "  + dbUser.get("name") );  
  46.         System.out.println("age" + " : "  + dbUser.get("age") );  
  47.         DBObject dbAddress = (DBObject)user.get("address");  
  48.         System.out.println("city" + " : "  + dbAddress.get("city") );  
  49.         System.out.println("street" + " : "  + dbAddress.get("street") );  
  50.         System.out.println("mail" + " : "  + dbAddress.get("mail") );  
  51.           
  52.     }  
  53.   
  54. }  


輸出結果為:

 

 

[java] view plaincopy
  1. name : jimmy  
  2. age : 34  
  3. city : bj  
  4. street : bq road  
  5. 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
  1. package cn.test;  
  2.   
  3. import java.net.UnknownHostException;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import com.mongodb.BasicDBObject;  
  8. import com.mongodb.BasicDBObjectBuilder;  
  9. import com.mongodb.DB;  
  10. import com.mongodb.DBCollection;  
  11. import com.mongodb.DBObject;  
  12. import com.mongodb.Mongo;  
  13.   
  14. public class Test1 {  
  15.   
  16.     public static void main(String[] args) throws UnknownHostException {  
  17.           
  18.         /** 
  19.          * Mongo類代表與MongoDB伺服器的串連,有多種建構函式。無參建構函式預設串連localhost:27017. 
  20.          */  
  21.         Mongo connection = new Mongo("localhost:20000");  
  22.         /** 
  23.          * DB類代表資料庫,如果當前伺服器上沒有該資料庫,會預設建立一個 
  24.          */  
  25.         DB db = connection.getDB("mylearndb");  
  26.         /** 
  27.          * DBCollection代表集合,如果資料庫中沒有該集合,會預設建立一個 
  28.          */  
  29.         DBCollection fruitShop = db.getCollection("fruitshop");  
  30.         /** 
  31.          *  建立水果店文檔對象 
  32.          */  
  33.         DBObject shop1 = new BasicDBObject();  
  34.         shop1.put("name", "The Fruit King");  
  35.         /** 
  36.          *  水果店內水果儲存在一個內嵌文檔的數組中,格式為: 
  37.          *  [{"name" : "apple", "quality" : "good", "price" : "5.6"},  
  38.          *   {"name" : "orange", "quality" : "normal", "price" : "1.5"}, 
  39.          *   ......] 
  40.          */  
  41.         // 數組通過List表示  
  42.         List<DBObject> fruits = new ArrayList<DBObject>();  
  43.         // 數組中的每一個文檔,我們通過BasicDBObjectBuilder來構造  
  44.         fruits.add(BasicDBObjectBuilder.start().add("name", "apple").add("quality", "good").add("price", "5.6").get());  
  45.         fruits.add(BasicDBObjectBuilder.start().add("name", "orange").add("quality", "normal").add("price", "1.5").get());  
  46.         shop1.put("fruits", fruits);  
  47.           
  48.         fruitShop.insert(shop1);  
  49.           
  50.     }  
  51.   
  52. }  


我們通過Shell串連到資料庫上,直觀地看看資料庫中集合內的資料:

 

 

[javascript] view plaincopy
  1. > use mylearndb;  
  2. switched to db mylearndb  
  3. > db.fruitshop.find();  
  4. { "_id" : ObjectId("504c26fed9005e6e410c5979"), "name" : "The Fruit King", "frui  
  5. ts" : [         {       "name" : "apple",       "quality" : "good",     "price"  
  6. : "5.6" },      {       "name" : "orange",      "quality" : "normal",   "price"  
  7. : "1.5" } ] }  
  8. >  


以上就是利用Java驅動操作MongoDB的一個簡單樣本,使用Java驅動操作MongoDB很簡單,大家實際使用中對於API可以參照MongoDB提供的官方文檔。

 

下面的連結就是2.9.0版驅動對應的API文檔:

http://api.mongodb.org/java/2.9.0/

學習MongoDB--(11):應用舉例(利用java操作MongoDB)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.