小编Ris*_*ora的帖子

将具有大量数据的 mongo 集合复制到另一个集合?

我有一个包含 250 万条数据的 mongo 集合,并且可能会增长到 300 万条。我正在使用 spring 批处理,并试图将该集合复制到另一个集合。我使用的方法如下:

  • 在 tasklet 中,我创建了一个 ProcessBuilder 对象并调用了一个执行 mongo 查询的 shell 脚本。shell脚本的内容如下:

    >  mongo $serverURL/$dbName js-file-to-execute.js
    
    // js file contains copy command (db.collection.copyto('newCollection'))
    
    Run Code Online (Sandbox Code Playgroud)

对于较少的数据(< 200 k),它工作正常,但对于 200 万数据,它挂起 mongo 服务器并且作业因 Socket Exception 而失败

  • 使用 mongo 模板并执行查询

dbMongoTemplate.getDb().getCollection("collection").aggregate(Arrays.asList((DBObject) new BasicDBObject("$out","newCollection")));

这将执行一个 mongo 聚合查询 db.collection.aggregate({$out : "newCollection"})

这也适用于数据较少的集合,但对于较大的数据集,它会一直运行,直到发生套接字超时并最终使作业失败。

请建议复制数据的有效方法?

mongodb nosql

2
推荐指数
1
解决办法
3182
查看次数

标签 统计

mongodb ×1

nosql ×1