In C# we can bulk insert data to mongo using insertBatch() method
public string SendDatatoMongo()
{
string result = "";
using (TestEntities context = new TestEntities())
{
var connectionString = "mongodb://myserver:27017/?safe=true;w=1;wtimeout=3000s";
MongoServer server = MongoServer.Create(connectionString);
try
{
var data = context.mytable.OrderBy(x => x.Id).Skip(30000000).Take(100000).AsQueryable();
MongoDatabase db = server.GetDatabase("mydb");
MongoCollection MCollection = db.GetCollection("mytable");
MCollection.InsertBatch(data);
}
catch (Exception ex)
{
result = ex.Message;
}
finally { server.Disconnect(); }
}
return result;
}
Can we do the same thing in java? I didn't find any batch insert api using mongo java driver. I am trying to take data in bulk from sqlserver and insert in mongo. Its directly insertion from sqlserver to mongo not by creating any document in between.
Class.forName(driver).newInstance();
conn = DriverManager.getConnection(url, databaseUserName, databasePassword);
stmt = conn.prepareStatement("select * from mytable where Id > 2000000);
result = null;
result = stmt.executeQuery();
// stmt.addBatch();
result.setFetchSize(1000);
while (result.next()) {
//System.out.println("Inside while");
mybean bean = new mybean();
bean.setId(result.getLong(("Id")));
List<DBObject> list = new ArrayList<DBObject>();
list.add(bean);
MongoDBJDBC.dbconnection(list);
}
This is what I am trying in java.