Main Tutorials

Java MongoDB : Insert a document

In this tutorial, we show you 4 ways to insert below JSON data into a “document“, via Java MongoDB API.

Test Data

Test data in JSON format.


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

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

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

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

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

Full example


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

  }
}

Output…


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"}}
What is “_id” ?
The _id is added by MongoDB automatically, for identity purpose. From MongoDB document, it said, all element names that start with “_”, “/” and “$” are reserved for internal use.

References

  1. BasicDBObject Java Doc
  2. BasicDBObjectBuilder Java Doc

About Author

author image
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.

Comments

Subscribe
Notify of
15 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
zubair
6 years ago

hi its good work I am also working on this topic MongoDB insert a documenthttp://programmershelper.com/mongodb-insert-document-guideline

Tomas Echeverri
9 years ago

POJO Mapping example left (Frameworks)

sharanayya Guthedar
5 years ago

did u get any information on mapping ??

Tejas Mahajan
4 years ago

Hi I have come across a situation where I have to store HashMap<String, List> in Mongo document, & and while searching I need documents which contains values from List how to implement this solution?

Michalis Argyriou
8 years ago

Please consider using Document instead of DBobject (the latter is deprecated). See also this link: http://mongodb.github.io/mongo-java-driver/3.0/bson/documents/

rashmi
9 years ago

Hey! What if I dont want to display ‘_id’ but rest of the collection?

Will
9 years ago

MongoDB rocks. I installed it using the guide at https://www.rosehosting.com/blog/install-mongodb-on-a-centos-vps/ and I am learning it at the moment. Thanks for your Java and MongoDB tutorials.

Ananth
9 years ago

Hi, I wanted to insert a collection of object into MongoDB using java. Could you please let me know the steps

Everett
9 years ago

Your examples are always great!!!

Pham Nghiep
9 years ago

What is the fastest ways to insert? Thanks (y)

Bry24
10 years ago

I think it should be noted that in Example 3 the HashMap implementation could change at some point in the future. This would require updating every old HashMap in the table or just sticking with the old one. Problem is some are not aware and will freak that their table is corrupted when it is fine. Good Job with the examples.

Alex Anderson
10 years ago

I am in love with mongo now.
Thanks sir 🙂

armen
11 years ago

Bravo!!!!

amine
12 years ago

i want insert in mongodb via http but doesn’t work :'(
plz help

public class addProduct extends Activity{
	TextView codbarText,typeText,produitText,avisText,descriptionText,dateText;
	String codbarText_,typeText_,produitText_,avisText_,descriptionText_,dateText_;
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.addproduct);
	    
         codbarText=(TextView) findViewById(R.id.editText1);
         typeText=(TextView) findViewById(R.id.editText2);
         produitText=(TextView) findViewById(R.id.editText3);
         avisText=(TextView) findViewById(R.id.editText4);
         descriptionText=(TextView) findViewById(R.id.editText5);
         dateText=(TextView) findViewById(R.id.editText6);
        Button btEnreg = (Button) this.findViewById(R.id.buttonenregistrer);
        btEnreg.setOnClickListener(btEnregListener);
        Intent thisIntent =getIntent();
        String contents=thisIntent.getExtras().getString("contents");
        codbarText.setText(contents);
        
	}
	private Button.OnClickListener btEnregListener = new Button.OnClickListener() {
	    public void onClick(View v) {
	    	codbarText_ = codbarText.getText().toString();
	    	typeText_ = typeText.getText().toString();
	    	produitText_ = produitText.getText().toString();
	    	avisText_ = avisText.getText().toString();
	    	descriptionText_ = descriptionText.getText().toString();
	    	dateText_ = dateText.getText().toString();
			insert_product(codbarText_, typeText_, produitText_, avisText_, descriptionText_,dateText_);
			Toast.makeText(addProduct.this, "Produit crée avec succès", Toast.LENGTH_SHORT).show();
			finish();
           }
	};
	public void insert_product(String codbar, String type, String produit, String avis, String description,String date){
		try {
	        HttpClient client = new DefaultHttpClient();  
	        HttpPost post = new HttpPost(new Uri.Builder()
		    .scheme("https")
		    .authority("mongolab.com")
		    .path("api/1/databases/***/collections/****")
		    .appendQueryParameter("apiKey","4e9c48f0e4b016e146bf33b0").build().toString()); 
	        StringEntity se = new StringEntity("{\"codbar\":\""+codbar+"\"," +
	        "\"type\":\""+type+"\",\"produit\":\""+produit+"\",\"avis\":\""+avis+"\"," +
	        "\"description\":\""+description+"\",\"date\":\""+date+"\"}");
	        post.setEntity(se);
	        client.execute(post);  
	 
	    } catch (Exception e) {
	    	Log.e("gson", e.getMessage(), e);
	        e.printStackTrace();
	    }
	}
	public String readJsonFeed(String URL) throws URISyntaxException {
		StringBuilder builder = new StringBuilder();
		HttpClient client = new DefaultHttpClient();
				
		Log.i("gson", "readJsonFeed");
		
		HttpGet httpGet = new HttpGet(URL);
		
		Log.i("gson", "httpGet uri : " + httpGet.getURI().toString());
		
		try {
			HttpResponse response = client.execute(httpGet);
			StatusLine statusLine = response.getStatusLine();
			int statusCode = statusLine.getStatusCode();
			
			Log.i("gson", "statusCode : " + statusCode);
			
			if (statusCode == 200) {
				HttpEntity entity = response.getEntity();
				InputStream content = entity.getContent();
				BufferedReader reader = new BufferedReader(
						new InputStreamReader(content));
				String line;
				while ((line = reader.readLine()) != null) {
					builder.append(line);
					Log.i("aaaaaaaaaaaaaaaaaaaaaaaaaa",line);

				}
			} else {
				Log.e("gson", "Failed to download file");
			}
		} catch (ClientProtocolException e) {
			Log.e("gson", e.getMessage(), e);
			//e.printStackTrace();
		} catch (IOException e) {
			Log.e("gson", e.getMessage(), e);
			//e.printStackTrace();
		}
		return builder.toString();
	}
}
Egle
7 years ago
Reply to  amine

Hello mkyong,

I was wondering what kind of jar I need for java to recognise “mongo” keyword in imports…