1. 程式人生 > >Java 中對Mongodb 的基本操作

Java 中對Mongodb 的基本操作

HelloWorld程式

  學習任何程式的第一步,都是編寫HelloWorld程式,我們也不例外,看下如何通過Java編寫一個HelloWorld的程式。

  首先,要通過Java操作Mongodb,必須先下載Mongodb的Java驅動程式,可以在這裡下載

  新建立一個Java工程,將下載的驅動程式放在庫檔案路徑下,程式程式碼如下:

package com.mkyong.core;
import java.net.UnknownHostException;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import
 com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

/**
* Java + MongoDB Hello world Example

*/
public class App {
    public static void main(String[] args) {
        try {
            //例項化Mongo物件,連線27017埠            Mongo mongo = new Mongo("localhost", 27017);
                               //
連線名為yourdb的資料庫,假如資料庫不存在的話,mongodb會自動建立            DB db = mongo.getDB("yourdb");
            // Get collection from MongoDB, database named "yourDB"
//從Mongodb中獲得名為yourColleection的資料集合,如果該資料集合不存在,Mongodb會為其新建立            DBCollection collection = db.getCollection("yourCollection");
    // 使用BasicDBObject物件建立一個mongodb的document,並給予賦值。
            BasicDBObject document = new BasicDBObject();
            document.put("id", 1001);
            document.put("msg", "hello world mongoDB in Java");
            //將新建立的document儲存到collection中去            collection.insert(document);
            // 建立要查詢的document            BasicDBObject searchQuery = new BasicDBObject();
            searchQuery.put("id", 1001);
            // 使用collection的find方法查詢document            DBCursor cursor = collection.find(searchQuery);
            //迴圈輸出結果            while (cursor.hasNext()) {
            System.out.println(cursor.next());
            }
            System.out.println("Done"); 
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (MongoException e) {
            e.printStackTrace();
        }
    }
}

  最後,輸出的結果為:

{ "_id" : { "$oid" : "4dbe5596dceace565d229dc3"} , 
                "id" : 1001 , "msg" : "hello world mongoDB in Java"}
Done

  在上面的例子中,演示了使用Java對Mongodb操作的重要方法和步驟,首先通過建立Mongodb物件,傳入建構函式的引數是Mongodb的資料庫所在地址和埠,然後使用

  getDB方法獲得要連線的資料庫名,使用getCollection獲得資料集合的名,然後通過新建立BasicDBObject物件去建立document,最後通過collection的insert方法,將建立的document儲存到資料庫中去。而collection的find方法,則是用來在資料庫中查詢document。

  從Mongodb中獲得collection資料集

  在Mongodb中,可以通過如下方法獲得資料庫中的collection:

  DBCollection collection = db.getCollection("yourCollection");

  如果你不知道collection的名稱,可以使用db.getCollectionNames()獲得集合,然後再遍歷,如下:

  DB db = mongo.getDB("yourdb");
  Set collections = db.getCollectionNames();
  for(String collectionName : collections){
  System.out.println(collectionName);
  }

  完成的一個例子如下:

package com.mkyong.core;
import java.net.UnknownHostException;
import java.util.Set;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
/**
* Java : Get collection from MongoDB

*/
public class GetCollectionApp {
public static void main(String[] args) {
try {
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("yourdb");
Set<String> collections = db.getCollectionNames();
for (String collectionName : collections) {
System.out.println(collectionName);
}
DBCollection collection = db.getCollection("yourCollection");
System.out.println(collection.toString());
System.out.println("Done");

catch (UnknownHostException e) {
e.printStackTrace();
catch (MongoException e) {
e.printStackTrace();
}
}
}

  Mongodb中如何插入資料

  下面,講解下如何使用4種方式,將JSON資料插入到Mongodb中去。首先我們準備JSON

  格式的資料,如下:

  {
  "database" : "mkyongDB",
  "table" : "hosting",
  "detail" :
  {
  records : 99,
  index : "vps_index1",
  active : "true"
  }
  }
  }

  我們希望用不同的方式,通過JAVA程式碼向Mongodb插入以上格式的JSON資料

  第一種方法,是使用BasicDBObject,方法如下程式碼所示:

BasicDBObject document = new BasicDBObject();
document.put("database", "mkyongDB");
document.put("table", "hosting");
BasicDBObject documentDetail = new BasicDBObject();
documentDetail.put("records", "99");
documentDetail.put("index", "vps_index1");
documentDetail.put("active", "true");
document.put("detail", documentDetail);
collection.insert(document);

  第二種方法是使用BasicDBObjectBuilder物件,如下程式碼所示:

  BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start()
  .add("database", "mkyongDB")
  .add("table", "hosting");
  BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder.start()
  .add("records", "99")
  .add("index", "vps_index1")
  .add("active", "true");
  documentBuilder.add("detail", documentBuilderDetail.get());
  collection.insert(documentBuilder.get());

  第三種方法是使用Map物件,程式碼如下:

  Map documentMap =new HashMap();
  documentMap.put("database", "mkyongDB");
  documentMap.put("table", "hosting");
  Map documentMapDetail =new HashMap();
  documentMapDetail.put("records", "99");
  documentMapDetail.put("index", "vps_index1");
  documentMapDetail.put("active", "true");
  documentMap.put("detail", documentMapDetail);
  collection.insert(new BasicDBObject(documentMap));

  第四種方法,也就是最簡單的,即直接插入JSON格式資料

  String json ="{'database' : 'mkyongDB','table' : 'hosting',"+
  "'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";
  DBObject dbObject =(DBObject)JSON.parse(json);
  collection.insert(dbObject);

  這裡使用了JSON的parse方法,將解析後的JSON字串轉變為DBObject物件後再直接插入到collection中去。


  完整的程式碼如下所示:

  packagecom.mkyong.core;
  importjava.net.UnknownHostException;
  importjava.util.HashMap;
  importjava.util.Map;
  importcom.mongodb.BasicDBObject;
  importcom.mongodb.BasicDBObjectBuilder;
  importcom.mongodb.DB;
  importcom.mongodb.DBCollection;
  importcom.mongodb.DBCursor;
  importcom.mongodb.DBObject;
  importcom.mongodb.Mongo;
  importcom.mongodb.MongoException;
  importcom.mongodb.util.JSON;
  /**
  * Java MongoDB : Insert a Document
  *
  
*/
  publicclass InsertDocumentApp {
  publicstaticvoid main(String[] args){
  try{
  Mongo mongo =new Mongo("localhost", 27017);
  DB db = mongo.getDB("yourdb");
  // get a single collection  DBCollection collection = db.getCollection("dummyColl");
  // BasicDBObject example  System.out.println("BasicDBObject example...");
  BasicDBObject document =new BasicDBObject();
  document.put("database", "mkyongDB");
  document.put("table", "hosting");
  BasicDBObject documentDetail =new BasicDBObject();
  documentDetail.put("records", "99");
  documentDetail.put("index", "vps_index1");
  documentDetail.put("active", "true");
  document.put("detail", documentDetail);
  collection.insert(document);
  DBCursor cursorDoc = collection.find();
  while(cursorDoc.hasNext()){
  System.out.println(cursorDoc.next());
  }
  collection.remove(new BasicDBObject());
  // BasicDBObjectBuilder example  System.out.println("BasicDBObjectBuilder example...");
  BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start()
  .add("database", "mkyongDB")
  .add("table", "hosting");
  BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder.start()
  .add("records", "99")
  .add("index", "vps_index1")
  .add("active", "true");
  documentBuilder.add("detail", documentBuilderDetail.get());
  collection.insert(documentBuilder.get());
  DBCursor cursorDocBuilder = collection.find();
  while(cursorDocBuilder.hasNext()){
  System.out.println(cursorDocBuilder.next());
  }
  collection.remove(new BasicDBObject());
  // Map example  System.out.println("Map example...");
  Map documentMap =new HashMap();
  documentMap.put("database", "mkyongDB");
  documentMap.put("table", "hosting");
  Map documentMapDetail =new HashMap();
  documentMapDetail.put("records", "99");
  documentMapDetail.put("index", "vps_index1");
  documentMapDetail.put("active", "true");
  documentMap.put("detail", documentMapDetail);
  collection.insert(new BasicDBObject(documentMap));
  DBCursor cursorDocMap = collection.find();
  while(cursorDocMap.hasNext()){
  System.out.println(cursorDocMap.next());
  }
  collection.remove(new BasicDBObject());
  // JSON parse example  System.out.println("JSON parse example...");
  String json ="{'database' : 'mkyongDB','table' : 'hosting',"+
  "'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";
  DBObject dbObject =(DBObject)JSON.parse(json);
  collection.insert(dbObject);
  DBCursor cursorDocJSON = collection.find();
  while(cursorDocJSON.hasNext()){
  System.out.println(cursorDocJSON.next());
  }
  collection.remove(new BasicDBObject());
  }catch(UnknownHostException e){
  e.printStackTrace();
  }catch(MongoException e){
  e.printStackTrace();
  }
  }
  }

  更新Document

  假設如下的JSON格式的資料已經儲存到Mongodb中去了,現在要更新相關的資料。

  {"_id" : {"$oid" : "x"} , "hosting" : "hostA" , "type" : "vps" , "clients" : 1000}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostB" , "type" : "dedicated server" , "clients" : 100}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostC" , "type" : "vps" , "clients" : 900}

   假設現在要將hosting中值為hostB的進行更新,則可以使用如下的方法:

  BasicDBObject newDocument =new BasicDBObject();
  newDocument.put("hosting", "hostB");
  newDocument.put("type", "shared host");
  newDocument.put("clients", 111);
  collection.update(new BasicDBObject().append("hosting", "hostB"), newDocument);

   可以看到,這裡依然使用了BasicDBObject物件,併為其賦值了新的值後,然後使用collection的update方法,即可更新該物件。

  更新後的輸出如下:

  {"_id" : {"$oid" : "x"} , "hosting" : "hostA" , "type" : "vps" , "clients" : 1000}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostB" , "type" : "shared host" , "clients" : 111}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostC" , "type" : "vps" , "clients" : 900}

   另外,還可以使用mongodb中的$inc修飾符號去對某個值進行更新,比如,要將hosting值為hostB的document的clients的值得更新為199(即100+99=199),可以這樣:

  BasicDBObject newDocument =new BasicDBObject().append("$inc",
  new BasicDBObject().append("clients", 99));
  collection.update(new BasicDBObject().append("hosting", "hostB"), newDocument);

   則輸出如下:

  {"_id" : {"$oid" : "x"} , "hosting" : "hostA" , "type" : "vps" , "clients" : 1000}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostB" , "type" : "dedicated server" , "clients" : 199}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostC" , "type" : "vps" , "clients" : 900}

   接下來,講解$set修飾符的使用。比如要把hosting中值為hostA的document中的

  type的值進行修改,則可以如下實現:

  BasicDBObject newDocument3 =new BasicDBObject().append("$set",
  new BasicDBObject().append("type", "dedicated server"));
  collection.update(new BasicDBObject().append("hosting", "hostA"), newDocument3);

   則輸出如下,把type的值從vps改為dedicated server:

  {"_id" : {"$oid" : "x"} , "hosting" : "hostB" , "type" : "dedicated server" , "clients" : 100}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostC" , "type" : "vps" , "clients" : 900}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostA" , "clients" : 1000 , "type" : "dedicated server"}

   要注意的是,如果不使用$set的修飾符,而只是如下程式碼:

  BasicDBObject newDocument3 =new BasicDBObject().append("type", "dedicated server");
  collection.update(new BasicDBObject().append("hosting", "hostA"), newDocument3);

   則會將所有的三個document的type型別都改為dedicated server了,因此要使用$set以更新特定的document的特定的值。

  如果要更新多個document中相同的值,可以使用$multi,比如,要把所有vps為type的document,將它們的clients的值更新為888,可以如下實現:

  BasicDBObject updateQuery =new BasicDBObject().append("$set",
  new BasicDBObject().append("clients", "888"));
  collection.update(new BasicDBObject().append("type", "vps"), updateQuery, falsetrue);  

  輸出如下:

  {"_id" : {"$oid" : "x"} , "hosting" : "hostA" , "clients" : "888" , "type" : "vps"}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostB" , "type" : "dedicated server" , "clients" : 100}
  {"_id" : {"$oid" : "x"} , "hosting" : "hostC" , "clients" : "888" , "type" : "vps"}

  最後,還是給出更新document的完整例子:

  package com.liao;
  import java.net.UnknownHostException;
  import com.mongodb.BasicDBObject;
  import com.mongodb.DB;
  import com.mongodb.DBCollection;
  import com.mongodb.DBCursor;
  import com.mongodb.Mongo;
  import com.mongodb.MongoException;
  publicclass UpdateDocumentApp {
  publicstaticvoid printAllDocuments(DBCollection collection){
  DBCursor cursor = collection.find();
  while (cursor.hasNext()) {
  System.out.println(cursor.next());
  }
  }
  publicstaticvoid removeAllDocuments(DBCollection collection){
  collection.remove(new BasicDBObject());
  }
  publicstaticvoid insertDummyDocuments(DBCollection collection){
  BasicDBObject document = new BasicDBObject();
  document.put("hosting", "hostA");
  document.put("type", "vps");
  document.put("clients", 1000);
  BasicDBObject document2 = new BasicDBObject();
  document2.put("hosting", "hostB");
  document2.put("type", "dedicated server");
  document2.put("clients", 100);
  BasicDBObject document3 = new BasicDBObject();
  document3.put("hosting", "hostC");
  document3.put("type", "vps");
  document3.put("clients", 900);
  collection.insert(document);
  collection.insert(document2);
  collection.insert(document3);
  }
  publicstaticvoid main(String[] args) {
  try {
  Mongo mongo = new Mongo("localhost", 27017);
  DB db = mongo.getDB("yourdb");
  DBCollection collection = db.getCollection("dummyColl");
  System.out.println("Testing 1...");
  insertDummyDocuments(collection);
  //find hosting = hostB, and update it with new document  BasicDBObject newDocument = new BasicDBObject();
  newDocument.put("hosting", "hostB");
  newDocument.put("type", "shared host");
  newDocument.put("clients", 111);
  collection.update(new BasicDBObject().append("hosting", "hostB"), newDocument);
  printAllDocuments(collection);
  removeAllDocuments(collection);
  System.out.println("Testing 2...");
  insertDummyDocuments(collection);
  BasicDBObject newDocument2 = new BasicDBObject().append("$inc",
  new BasicDBObject().append("clients", 99));
  collection.update(new BasicDBObject().append("hosting", "hostB"), newDocument2);
  printAllDocuments(collection);
  removeAllDocuments(collection);
  System.out.println("Testing 3...");
  insertDummyDocuments(collection);
  BasicDBObject newDocument3 = new BasicDBObject().append("$set",
  new BasicDBObject().append("type", "dedicated server"));
  collection.update(new BasicDBObject().append("hosting", "hostA"), newDocument3);
  printAllDocuments(collection);
  removeAllDocuments(collection);
  System.out.println("Testing 4...");
  insertDummyDocuments(collection);
  BasicDBObject updateQuery = new BasicDBObject().append("$set",
  new BasicDBObject().append("clients", "888"));
  collection.update(
  new BasicDBObject().append("type", "vps"), updateQuery, falsetrue);
  printAllDocuments(collection);
  removeAllDocuments(collection);
  System.out.println("Done");
  } catch (UnknownHostException e) {
  e.printStackTrace();
  } catch (MongoException e) {
  e.printStackTrace();
  }
  }
  }

  查詢Document

  下面學習如何查詢document,先用下面的程式碼往資料庫中插入1-10數字:

  for(int i=1; i <=10; i++){
  collection.insert(new BasicDBObject().append("number", i));

  }

   接下來,看下如下的例子:

  1) 獲得資料庫中的第一個document:

  DBObject doc = collection.findOne();
  System.out.println(dbObject);

   輸出為:

  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80bd"} , "number" : 1}

   2)獲得document的集合

  DBCursor cursor = collection.find();
  while(cursor.hasNext()){
  System.out.println(cursor.next());
  }

   這裡,使用collection.find()方法,獲得當前資料庫中所有的documents物件集合

  然後通過對DBCursor物件集合的遍歷,即可輸出當前所有documents。輸出如下:

  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80bd"} , "number" : 1}
  //..........中間部分省略,為2到9的輸出  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80c6"} , "number" : 10}

   3) 獲取指定的document

  比如要獲得number=5的document物件內容,可以使用collection的find方法即可,如下:

  BasicDBObject query =new BasicDBObject();
  query.put("number", 5);
  DBCursor cursor = collection.find(query);
  while(cursor.hasNext()){
  System.out.println(cursor.next());
  }

   即輸出:

  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80c1"} , "number" : 5}

   4) 使用in操作符號

  在mongodb中,也可以使用in操作符,比如要獲得number=9和number=10的document物件,可以如下操作:

  BasicDBObject query =new BasicDBObject();
  List list =new ArrayList();
  list.add(9);
  list.add(10);
  query.put("number", new BasicDBObject("$in", list));
  DBCursor cursor = collection.find(query);
  while(cursor.hasNext()){
  System.out.println(cursor.next());
  }

   這裡使用了一個List,並將list傳入到BasicDBObject的建構函式中,並使用了in操作符號,輸出如下:

  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80c5"} , "number" : 9}
  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80c6"} , "number" : 10}

  5) 使用>,<等比較符號

  在mongodb中,也可以使用比如>,<等數量比較符號,比如要輸出number>5的document集合,則使用“$gt”即可,同理,小於關係則使用$lt,例子如下:

  BasicDBObject query =new BasicDBObject();
  query.put("number", new BasicDBObject("$gt", 5));
  DBCursor cursor = collection.find(query);
  while(cursor.hasNext()){
  System.out.println(cursor.next());
  }

   輸出如下:

  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80c2"} , "number" : 6}
  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80c3"} , "number" : 7}
  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80c4"} , "number" : 8}
  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80c5"} , "number" : 9}
  {"_id" : {"$oid" : "4dc7f7b7bd0fb9a86c6c80c6"} , "number" : 10}
  也可以多個比較符號一起使用,比如要輸出number>5和number<8的document,則如下:
  BasicDBObject query =new BasicDBObject();
  query.put("number", new BasicDBObject("$gt", 5).append("$lt", 8));
  DBCursor cursor = collection.find(query);
  while(cursor.hasNext()){
  System.out.println(cursor.next());
  }

   同樣,如果是不等於的關係的話,可以使用$ne操作符,如下:

  BasicDBObject query5 =new BasicDBObject();
  query5.put("number", new BasicDBObject("$ne", 8));
  DBCursor cursor6 = collection.find(query5);
  while(cursor6.hasNext()){
  System.out.println(cursor6.next());
  }

   以上輸出number=8之外的所有document。

  刪除document

  下面我們學習如何刪除document,依然以上面的已插入的1-10的documents集合為例說明:

  1) 刪除第一個document

  DBObject doc = collection.findOne();
  collection.remove(doc);

   2) 刪除指定的document

  比如刪除number=2的document,如下方法:

  BasicDBObject document =new BasicDBObject();
  document.put("number", 2);
  collection.remove(document);

   要注意的是,如下的方法將只會刪除number=3的document。

  BasicDBObject document =new BasicDBObject();
  document.put("number", 2);
  document.put("number", 3);
  collection.remove(document);

  3) 使用in 操作符號指定刪除document

  下面的例子將同時刪除number=4和number=5的document,使用的是in操作符

  BasicDBObject query2 =new BasicDBObject();
  List list =new ArrayList();
  list.add(4);
  list.add(5);
  query2.put("number", new BasicDBObject("$in", list));
  collection.remove(query2);

  4) 使用“$gt”刪除大於某個值的document

  BasicDBObject query =new BasicDBObject();
  query.put("number", new BasicDBObject("$gt", 9));
  collection.remove(query);

  以上會刪除number=10的document。

  5) 刪除所有的document

  DBCursor cursor = collection.find();
  while(cursor.hasNext()){
  collection.remove(cursor.next());
  }

  儲存圖片到Mongodb

  下面將講解如何使用Java MongoDB GridFS API去儲存圖片等二進位制檔案到Monodb,關於Java MongoDB GridFS API的詳細論述,請參考http://www.mongodb.org/display/DOCS/GridFS+Specification

  1)儲存圖片

  程式碼段如下:

  String newFileName ="mkyong-java-image";
  File imageFile =newFile("c:\\JavaWebHosting.png");
  GridFS gfsPhoto =new GridFS(db, "photo");
  GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
  gfsFile.setFilename(newFileName);
  gfsFile.save();

  這裡,將c盤下的JavaWebHosting.png儲存到mongodb中去,並命名為mkyong-java-image。

  2) 讀取圖片資訊

  程式碼段如下

  String newFileName ="mkyong-java-image";
  GridFS gfsPhoto =new GridFS(db, "photo");
  GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
  System.out.println(imageForOutput);

  將會輸出JSON格式的結果;

  {
  "_id" :
  {
  "$oid" : "4dc9511a14a7d017fee35746"
  } ,
  "chunkSize" : 262144 ,
  "length" : 22672 ,
  "md5" : "1462a6cfa27669af1d8d21c2d7dd1f8b" ,
  "filename" : "mkyong-java-image" ,
  "contentType" : null ,
  "uploadDate" :
  {
  "$date" : "2011-05-10T14:52:10Z"
  } ,
  "aliases" : null
  }

  可以看到,輸出的是檔案的屬性相關資訊。


  3) 輸出已儲存的所有圖片

  下面程式碼段,輸出所有儲存在photo名稱空間下的圖片資訊:

  GridFS gfsPhoto =new GridFS(db, "photo");
  DBCursor cursor = gfsPhoto.getFileList();
  while(cursor.hasNext()){
  System.out.println(cursor.next());
  }

   4) 從資料庫中讀取一張圖片並另存

  下面的程式碼段,從資料庫中讀取一張圖片並另存為另外一張圖片到磁碟中

  String newFileName ="mkyong-java-image";
  GridFS gfsPhoto =new GridFS(db, "photo");
  GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
  imageForOutput.writeTo("c:\\JavaWebHostingNew.png");

   5) 刪除圖片

  String newFileName ="mkyong-java-image";
  GridFS gfsPhoto =new GridFS(db, "photo");
  gfsPhoto.remove(gfsPhoto.findOne(newFileName));

   如何將JSON資料格式轉化為DBObject格式

  在mongodb中,可以使用com.mongodb.util.JSON類,將JSON格式的字串轉變為DBObject物件。MongoDB for JAVA驅動中提供了用於向資料庫中儲存普通物件的介面DBObject,當一個文件從MongoDB中取出時,它會自動把文件轉換成DBObject介面型別,要將它例項化為需要的物件。比如:

  {
  'name' : 'mkyong',
  'age' : 30
  }

   這樣的JSON格式字串,轉換方法為:

  DBObject dbObject =(DBObject) JSON.parse("{'name':'mkyong', 'age':30}");

   完整的程式碼如下:

  packagecom.mkyong.core;
  importjava.net.UnknownHostException;
  importcom.mongodb.DB;
  importcom.mongodb.DBCollection;
  importcom.mongodb.DBCursor;
  importcom.mongodb.DBObject;
  importcom.mongodb.Mongo;
  importcom.mongodb.MongoException;
  importcom.mongodb.util.JSON;
  /**
  * Java MongoDB : Convert JSON data to DBObject
  *
  
*/
  publicclass App {
  publicstaticvoid main(String[] args){
  try{
  Mongo mongo =new Mongo("localhost", 27017);
  DB db = mongo.getDB("yourdb");
  DBCollection collection = db.getCollection("dummyColl");
  DBObject dbObject =(DBObject) JSON
  .parse("{'name':'mkyong', 'age':30}");
  collection.insert(dbObject);
  DBCursor cursorDoc = collection.find();
  while(cursorDoc.hasNext()){
  System.out.println(cursorDoc.next());
  }
  System.out.println("Done");
  }catch(UnknownHostException e){
  e.printStackTrace();
  }catch(MongoException e){
  e.printStackTrace();
  }
  }
  }

   則輸出為:

相關推薦

Java Mongodb基本操作

HelloWorld程式   學習任何程式的第一步,都是編寫HelloWorld程式,我們也不例外,看下如何通過Java編寫一個HelloWorld的程式。   首先,要通過Java操作Mongodb,必須先下載Mongodb的Java驅動程式,可以在這裡下載。

Java大數的操作

1.整型大數類(BigInteger): //構造:BigInteger(String val) 將 BigInteger的十進位制字串表示形式轉換為 BigInteger //物件.toString(int radix) 返回此 BigInteger 的給定基數的字串表

java陣列的基本操作

1. 宣告一個數組 1 String[] arr1 = new String[5]; 2 String[] arr2 = {"a","b","c", "d", "e"}; 3 String[] arr3= new String[]{"a","b","c","d","e"}; 2. 輸出一個數

java實現MongoDB基本操作(增刪改查)

準備工作:要想用java實現對MongoDB的增刪改查,首先需要下載mongo的java驅動,mongo-java-driver-3.2.2, 下載地址:https://oss.sonatype.org/content/repositories/releases/org/m

java語言檔案基本的讀寫操作

 public static void main(String[] args) {   File cfile = new File("newnewtest.txt");   if(cfile.exists()){    try {     FileInputStream fis = new FileInput

MongoDB系列-- SpringBoot MongoDB基本操作

SpringBoot 中對 MongoDB 的 基本操作 Database 庫的建立 首先 在MongoDB 操作客戶端 Robo

MongoDB-Java的兩個基本操作Upsert和insertMany

slist 出現 兩個 我想 option ceo logs 方法 lis   此文只是為了記錄幾個基本操作,首先Upsert,有多種方法可以進行,但是都需要指定UpdateOptions.upsert(true),其中最簡單的辦法如下(eqq是一個用來filter的BSO

JavaString字符串的常用操作

with 3.4 () val pareto exc case byte ring 這周遇到了一個需要處理String字符串的問題,用到了split將字符串解析為一個String的數組,還用到了某些替換字符的操作。 1 /* 2 **將String source按‘,

JavaList集合的常用操作

stat sub 增強for循環 增強for 類型轉換 per sem 數值 tor 目錄: list中添加,獲取,刪除元素; list中是否包含某個元素; list中根據索引將元素數值改變(替換); list中查看(判斷)元素的索引; 根據元素索引位置進行的判斷; 利

JavaArrays陣列工具類的常用操作

Arrays類是JDK提供的專門用於運算元組的工具類,位於java.util包中。 用Arrays類的方法運算元組,無需自己編碼。 Arrays類的常用方法: 1、boolean equals(array1,array2):比較兩個陣列是否相等。 /** * 陣

Java 實現mongodb and or 和and or聯合查詢操作

AND:publicvoid testAnd(){          //agender='female' AND age > 27          DBObject queryCondition = new BasicDBObject();          que

Java MongoDB 基本操作

本文介紹如何使用Java操作MongoDB,如建立連線資料庫、集合和文件,儲存、更新、刪除和查詢文件。 1. 引入依賴 <dependency> <groupId>org.mongodb</groupId>

Java MongoDB基本操作(查詢、刪除、更新等)

正在持續更新... MongoDB中的資料 { "_id": ObjectId("57c43caed4c63d7e39b5dc48"), "name": "張三", "age": 15, "arr": [1,2,3], "arrOb

Java mongoDB 基本操作入門

啟動資料庫: ./bin/mongod --dbpath=data mongo shell訪問資料庫 bin/mongo http檢視資料庫: http://192.168.1.132:27017/ 基本操作: 插入: db.person.insert({"name":"jack","age":

MongoDB】-Java實現mongodb的And、Or、In操作

1)And(同時滿足多個條件時用And) public void testAnd(){ DBObject queryCondition = new BasicDBObject();

Java實現MongoDB的AND、OR和IN操作

       在MongoDB的官方文件中關於Java操作的介紹,只給出了很簡單的幾個例子。這些例子雖然可以滿足一定的需求,但是還並不是太完全。下面是我根據網頁中的提示寫的幾個例子。        1

Java 實現mongodb and or 和and or聯合查詢操作

 轉載: AND: public void testAnd(){ //agender='female' AND age > 27 DBObject q

Java日期常見的操作實現

/* * 現在日期和查詢日期先後比較 * month 輸入以現在為基準,往前推的n個月 * */ public static boolean DateCompa(Integer month, Date orgQueryDate)

javaSVN的相關操作

String conflictType = "";String conflictFile = "";SVNRepository repository;SVNClientManager clientManager;private Logger logger = LoggerF

MongoDB學習筆記(二) JAVAMongoDB操作

 開發環境: System:Windows IDE:eclipse、MyEclipse 8 Database:mongoDB 開發依賴庫: JavaEE5、mongo-2.5.3.jar、junit-4.8.2.jar Email:[email p