このチュートリアルでは、Java MongoDB APIを使用して、以下の

JSON

データを「

ドキュメント

」に挿入する4つの方法を示します。

テストデータ

JSON形式のデータをテストします。

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

1. 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);

2. 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());

3.マップの例

    Map<String, Object> documentMap = new HashMap<String, Object>();
    documentMap.put("database", "mkyongDB");
    documentMap.put("table", "hosting");

    Map<String, Object> documentMapDetail = new HashMap<String, Object>();
    documentMapDetail.put("records", 99);
    documentMapDetail.put("index", "vps__index1");
    documentMapDetail.put("active", "true");

    documentMap.put("detail", documentMapDetail);

    collection.insert(new BasicDBObject(documentMap));

4. JSONの解析例

    String json = "{'database' : 'mkyongDB','table' : 'hosting'," +
      "'detail' : {'records' : 99, 'index' : 'vps__index1', 'active' : 'true'}}}";

    DBObject dbObject = (DBObject)JSON.parse(json);

    collection.insert(dbObject);

完全な例

package com.mkyong.core;

import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
import com.mongodb.BasicDBObject;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.util.JSON;
/** **
 **  Java MongoDB : Insert a Document
 **
 ** /public class InsertDocumentApp {
  public static void main(String[]args) {

    try {

    Mongo mongo = new Mongo("localhost", 27017);
    DB db = mongo.getDB("yourdb");

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

   //1. 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());

   //2. 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());

   //3. Map example
    System.out.println("Map example...");
    Map<String, Object> documentMap = new HashMap<String, Object>();
    documentMap.put("database", "mkyongDB");
    documentMap.put("table", "hosting");

    Map<String, Object> documentMapDetail = new HashMap<String, Object>();
    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());

   //4. 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();
    }

  }
}


出力…​

BasicDBObject example...
{ "__id" : { "$oid" : "4dc9ef6f237f86642d5b34bd"} , "database" : "mkyongDB" ,
"table" : "hosting" , "detail" : { "records" : "99" , "index" : "vps__index1" , "active" : "true"}}

BasicDBObjectBuilder example...
{ "__id" : { "$oid" : "4dc9ef6f237f86642d5b34be"} , "database" : "mkyongDB" ,
"table" : "hosting" , "detail" : { "records" : "99" , "index" : "vps__index1" , "active" : "true"}}

Map example...
{ "__id" : { "$oid" : "4dc9ef6f237f86642d5b34bf"} , "detail" : { "index" : "vps__index1" ,
"active" : "true" , "records" : "99"} , "table" : "hosting" , "database" : "mkyongDB"}

JSON parse example...
{ "__id" : { "$oid" : "4dc9ef6f237f86642d5b34c0"} , "database" : "mkyongDB" ,
"table" : "hosting" , "detail" : { "records" : 199 , "index" : "vps__index1" , "active" : "true"}}