如何使用单批文件或javascript导入或导出多个mongo集合

时间:2017-04-27 14:39:18

标签: javascript mongodb batch-file mongodb-query robo3t

我正在使用Robomongo 0.8.4并且我在单个数据库中有15个集合。每次使用CMD手动导出或导入。例如,如果我需要10个导入集合意味着,10次在CMD中运行mongo命令。 我的示例导入命令:

CD C:\Program Files\MongoDB\Server\3.2\bin>

mongoimport --db sampleDB --collection user1 --type json --file D:\user.json

所以避免这个,可以将所有导入或导出命令放在批处理或javascript文件中并在单次执行中运行该文件吗?

如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

如果你安装了NodeJ,你可以尝试这样的脚本:

var collections = [{coll: "user1", file: "user"}, {coll: "admin", file: "user2"}]
collections.forEach((item) => {
  var cmd = 'mongoimport --db sampleDB --collection ' + item.coll + ' --type json --file D:\\' + item.file + '.json'
  shell.exec (/*....*/)
})

注1

你需要安装shelljs和mongjs npm包。

注2

此脚本假定您的数据库中已有一些集合, 并且在D:\

中有一个以每个集合命名的文件

注3 : 我还没有测试过shell.exec部分

注4

如果您不想直接从数据库中读取集合的名称,您可以直接在脚本中对集合名称进行硬编码:

BAR_WIDTH

答案 1 :(得分:0)

所以只需准备一个文本文件,整个命令用换行符分隔,然后像myscript.bat一样保存,然后运行它。

CD "C:\Program Files\MongoDB\Server\3.2\bin>"
set list=user1 user2 user3
for %%a in (%list%) do (
   mongoimport --db sampleDB --collection %%a --type json --file D:\%%a.json
)

但扩展列表的次数与您需要的出口量一样多。

How do you loop in a Windows batch file?

Image with sample batch file

答案 2 :(得分:0)

我正在网上寻找解决方案。我发现mongorestore可能是一个更简单的选择。也许我误解了您所提问题的内容,但这是我的工作。

mongorestore -d mongodb --dir=folderWithJsonCollections
相关问题