注:僅僅做爲我的筆記所用。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文檔:函數