我正在使用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文件中并在单次执行中运行该文件吗?
如何解决这个问题?
答案 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
)
但扩展列表的次数与您需要的出口量一样多。
答案 2 :(得分:0)
我正在网上寻找解决方案。我发现mongorestore可能是一个更简单的选择。也许我误解了您所提问题的内容,但这是我的工作。
mongorestore -d mongodb --dir=folderWithJsonCollections