MongoDb - 将数据库导出到js脚本(类似于rockmongo export)

时间:2015-04-10 20:03:49

标签: mongodb codeception

有没有办法从命令行将MongoDb数据库转储到可以由mongo shell解释的javascript文件?我正在寻找一种方法来完成RockMongo Export函数的功能,但我需要能够从命令行脚本中调用它。我到处寻找可以做到这一点的东西,但我似乎找到的只是mongoexport和mongodump似乎没有做我想要的,因为这些只是创建JSON文件。

我需要这样做的原因是因为代码共享的MongoDb模块需要这种格式的文件才能在每次测试后恢复数据库。我想编写一个脚本来自动执行此过程,这样我就不必经常通过RockMongo并生成转储。

提前致谢!

1 个答案:

答案 0 :(得分:1)

如果其他人碰巧找到了这个,我终于找到了适合我的方案的解决方案。我不得不采取Markus'建议和滚动我自己的解决方案,但我发现了一个名为bsondump的mongodb命令,使事情变得更容易。

所以在我的脚本中我首先使用mongodump创建我的集合的BSON文件

mongodump --db mydb --collection mycollection --out - > mycollection.bson

然后我使用bsondump将其转换为可以在Shell Mode中使用的JSON

bsondump mycollection.bson > mycollection.json

最后,我使用PHP,因此在我的PHP脚本中,我循环遍历该json文件并将每行包装在insert语句中。

$lines = file('mycollection.json');
$inserts = [];

foreach($lines as $line)
{
    $inserts[] = 'db.getCollection("mycollection").insert(' . trim($line) . ');' . PHP_EOL;
}

file_put_contents('output.js', $inserts);

我猜测可能有更好的方法来做到这一点,但到目前为止,这对我来说似乎很有效。谢谢你指引我朝着正确的方向Markus!