BasicDBObjectBuilder和BasicDBObject

注:僅僅做爲我的筆記所用。html

轉自:https://www.cnblogs.com/gaopeng527/p/4399127.htmljava

Java驅動程序是MongoDB最先的驅動,已用於生產環境很長時間,十分穩定。能夠到MongoDB官方網站下載驅動,驅動版本爲2.9.0。mongodb

這個jar文件中,有兩個包,咱們會常常用到com.mongodb 和 com.mongodb.gridfs 。在Java中操做MongoDB,各類概念和shell中相似,幾乎全部的方法名也都一致,咱們先看個簡單的例子吧:shell

 

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") ); } } 

輸出結果爲:
 name : jimmy age : 34 city : bj street : bq road mail : ufpark 68#


從上述例子,咱們能夠看出,利用Java驅動操做MongoDB和shell中操做方式是十分類似的。數據庫

咱們這裏稍微提一下上面註釋中,解釋的文檔類。Java驅動中文檔必須是DBObject接口類型,這個接口能夠認爲是一個有序地java.util.Map。Java驅動中有提供了不少實現,咱們上例中採用了最簡單的BasicDBObject。api

【向集合中保存數組】數組

MongoDB集合中的鍵值對的值支持數組,在shell中,咱們經過[],來表示數組,那Java驅動中如何表示數組呢?在Java驅動中,java.util.List類型的對象,均可以表示MongoDB中的數組!咱們看一個例子:服務器

 

 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鏈接到數據庫上,直觀地看看數據庫中集合內的數據:
 > 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提供的官方文檔。app

 

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

 

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

相關文章
相關標籤/搜索