有没有办法从命令行将MongoDb数据库转储到可以由mongo shell解释的javascript文件?我正在寻找一种方法来完成RockMongo Export函数的功能,但我需要能够从命令行脚本中调用它。我到处寻找可以做到这一点的东西,但我似乎找到的只是mongoexport和mongodump似乎没有做我想要的,因为这些只是创建JSON文件。
我需要这样做的原因是因为代码共享的MongoDb模块需要这种格式的文件才能在每次测试后恢复数据库。我想编写一个脚本来自动执行此过程,这样我就不必经常通过RockMongo并生成转储。
提前致谢!
答案 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!