MongoRestore,跳过第一个文件

时间:2014-07-16 08:30:37

标签: mongodb

我正在恢复一个大的mongo数据库(90 GB)。我正在使用mongorestore,它在70%-90%的恢复过程中无声地失败。有没有办法在启动mongorestore时跳过转储的n个第一个文件? 我知道有一个过滤器选项,您可以在其中提供过滤器查询,但它没有帮助。

如果我尝试再次恢复整个备份,由于重复的索引错误,需要花费很多次。我试图再次恢复数据库,但它再次失败(由于套接字异常)

由于mongorestore似乎顺序处理bson转储,我想知道是否有办法说:"只需跳过1' 234' 567转储的第一个文件,然后恢复其余文件"

我只有一个大集合。我已经在不同的部分打破了转储,但似乎还不够。告诉mongorestore跳过已恢复的文档并继续下去会更容易。

谢谢

1 个答案:

答案 0 :(得分:2)

据我所知,在执行mongorestore时,没有办法告诉MongoDB跳过n个文档,但你可以利用--filter选项来做一些模仿这个的事情。假设您正在使用ObjectIds或具有某种序列的_id,您可以对集合执行查询以查找第n个文档的_id。像这样:

db.collection.find({}, { "_id" : 1 }).skip(n-1).limit(1);

然后,您可以将此_id作为参数传递给--filter选项,告诉它只恢复大于此_id的所有文档。像这样的东西:

mongorestore --filter '{"_id": { $gt : "<ID>" }}'

如果要在还原之前删除数据库,可以在上面的命令中添加--drop选项。

这应该只恢复_id大于第n个文档的文档,有效地跳过集合中的前n个文档。