Kiran Kiran - 1 year ago 87
Java Question

How to insert multiple documents at once in MongoDB through Java

I am using MongoDB in my application and was needed to insert multiple documents inside a MongoDB collection .
The version I am using is of 1.6

I saw an example here

in the

Bulk Insert Multiple Documents Section

Where the author was passing an array to do this .

When I tried the same , but why it isn't allowing , and please tell me how can I insert multiple documents at once ??

package com;

import java.util.Date;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.MongoClient;

public class App {

public static void main(String[] args) {
try {
MongoClient mongo = new MongoClient("localhost", 27017);
DB db = mongo.getDB("at");
DBCollection collection = db.getCollection("people");

* BasicDBObject document = new BasicDBObject();
* document.put("name", "mkyong"); document.put("age", 30);
* document.put("createdDate", new Date()); table.insert(document);

String[] myStringArray = new String[] { "a", "b", "c" };

collection.insert(myStringArray); // Compilation error at this line saying that "The method insert(DBObject...) in the type DBCollection is not applicable for the arguments (String[])"

} catch (Exception e) {



Please let me know what is the way so that I can insert multiple documents at once through java .

Answer Source

DBCollection.insert accepts a parameter of type DBObject, List<DBObject> or an array of DBObjects for inserting multiple documents at once. You are passing in a string array.

You must manually populate documents(DBObjects), insert them to a List<DBObject> or an array of DBObjects and eventually insert them.

DBObject document1 = new BasicDBObject();
document1.put("name", "Kiran");
document1.put("age", 20);

DBObject document2 = new BasicDBObject();
document2.put("name", "John");

List<DBObject> documents = new ArrayList<>();

The above snippet is essentially the same as the command you would issue in the MongoDB shell:

db.people.insert( [ {name: "Kiran", age: 20}, {name: "John"} ]);