Java MongoDB:文書を挿入する

Java MongoDB:ドキュメントを挿入

このチュートリアルでは、Java MongoDB APIを使用して、JSON以下のデータを「document」に挿入する4つの方法を示します。

テストデータ

JSON形式のテストデータ。

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

1. BasicDBObjectの例

    BasicDBObject document = new BasicDBObject();
    document.put("database", "exampleDB");
    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", "exampleDB")
        .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 documentMap = new HashMap();
    documentMap.put("database", "exampleDB");
    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));

4. JSON解析の例

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

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

    collection.insert(dbObject);

完全な例

package com.example.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", "exampleDB");
    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", "exampleDB")
                .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 documentMap = new HashMap();
    documentMap.put("database", "exampleDB");
    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());

    // 4. JSON parse example
    System.out.println("JSON parse example...");

    String json = "{'database' : 'exampleDB','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" : "exampleDB" ,
"table" : "hosting" , "detail" : { "records" : "99" , "index" : "vps_index1" , "active" : "true"}}

BasicDBObjectBuilder example...
{ "_id" : { "$oid" : "4dc9ef6f237f86642d5b34be"} , "database" : "exampleDB" ,
"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" : "exampleDB"}

JSON parse example...
{ "_id" : { "$oid" : "4dc9ef6f237f86642d5b34c0"} , "database" : "exampleDB" ,
"table" : "hosting" , "detail" : { "records" : 199 , "index" : "vps_index1" , "active" : "true"}}

What is “id” ?
_idは、IDの目的で、MongoDBによって自動的に追加されます。 MongoDBドキュメントによると、「」、「/」、「$」で始まるすべての要素名は内部使用のために予約されています。