0

在 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中尝试的。

4

0 回答 0