在 C# 中,我们可以使用 insertBatch() 方法向 mongo 批量插入数据
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;
}
我们可以在java中做同样的事情吗?我没有找到任何使用 mongo java 驱动程序的批量插入 api。我正在尝试从 sqlserver 批量获取数据并插入 mongo。它直接从 sqlserver 插入到 mongo,而不是通过在两者之间创建任何文档。
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);
}
这就是我在java中尝试的。