使用 mongoimport 从 Windows 文件夹批量导入 MongoDB

Posted

技术标签:

【中文标题】使用 mongoimport 从 Windows 文件夹批量导入 MongoDB【英文标题】:MongoDB Bulk import using mongoimport from Windows folder 【发布时间】:2014-04-05 17:01:57 【问题描述】:

我在存档中有很多 json 文件,我需要每次操作将它们导入 mongo(我认为它可能处于循环中)。你对此有什么想法吗?

【问题讨论】:

你要导入哪个操作系统? 我要在Win7中导入 【参考方案1】:

如果你使用的是 Linux/Unix shell,你可以试试

for filename in *; do mongoimport -d mydb -c $filename;  done

如果您使用的是 Windows:

FOR %i IN (C:\mongodbData\*.json) DO mongoimport --db dbName --collection colection --type json --file %i

【讨论】:

嗯,它是如何工作的?:) 我将它复制到 shell 中,编辑 db 和 col。我需要在哪里指向一个带有 jsons 的文件夹? @Sumeet 我已经更新了答案。您可以在 IN 参数中写入 windows 路径。@user3306125 非常感谢! :) @Sumeet 在完成之前需要在 $filename 后面加一个分号,至少在 OSX 上是这样。 但这是在单个集合中导入所有内容,即“集合”,如果有不同名称的不同集合怎么办。?我想用没有扩展名的 json 文件名创建集合【参考方案2】:

您需要使用mongorestore 从由mongodump 创建的转储中恢复

http://docs.mongodb.org/v2.6/reference/program/mongorestore/

例如

mongorestore --drop --oplogReplay mongodb/

【讨论】:

mongorestore 不是用于 BSON 转储文件而不是 JSON 吗?【参考方案3】:

你可以用这个:

FOR %i IN (<data folder>\*.json) DO mongoimport -d <database> -c <collection> --file %i

【讨论】:

【参考方案4】:

mongorestore 是导入所有导出的 mongodb 文件

cd C:\Program Files\MongoDB\Server\4.0\bin
mongorestore.exe -d <db name> C:\Users\Mike\Downloads\myProject\

但是如果你真的想只导入所有 meta json 文件而不需要 .bson

cd C:\Users\Mike\Downloads\myProject\
FOR %i IN (*.json) DO "C:\Program Files\MongoDB\Server\4.0\bin\mongoimport.exe" --db <db name> --collection %~ni --type json --file %i

这是 Windows 10 上的示例工作

【讨论】:

以上是关于使用 mongoimport 从 Windows 文件夹批量导入 MongoDB的主要内容,如果未能解决你的问题,请参考以下文章

可以从 Heroku 运行 mongoimport 吗?

如何在我的流星应用程序数据库中使用 mongoimport?

在 mongoimport --jsonArray 的子文档上创建 _id

在 mongoimport --jsonArray 的子文档上创建 _id

使用 Javascript/Node.js 在代码中执行 mongoimport

使用 mongoimport 解析 JSON 失败