我不知道该怎么做,我需要将 mongodb 集合导出为 .csv。在节点中使用 spawn.child_process 调用 mongoexport 将完成此操作,但我的 mongodb 服务器和节点服务器当前位于不同的机器上。
如何从我的节点服务器远程调用我的 mongo 服务器上的 mongoexport,然后将 .csv 获取到节点服务器?
我不知道该怎么做,我需要将 mongodb 集合导出为 .csv。在节点中使用 spawn.child_process 调用 mongoexport 将完成此操作,但我的 mongodb 服务器和节点服务器当前位于不同的机器上。
如何从我的节点服务器远程调用我的 mongo 服务器上的 mongoexport,然后将 .csv 获取到节点服务器?
首先,确保 MongoDB 端口已打开,并且您可以从服务器连接。然后,使用
mongoexport --username user --password pass --host host --db database --collection coll --type=csv --fields=displayName,emailAddress --query='{"status": "verified"}' -o users-YEAR-DAY-MONTH.csv
如果服务器位于公共网络中,请确保使用身份验证。
https://docs.mongodb.com/manual/security/
或者,运行 ssh 命令可能更简单,mongoexport
在 MongoDb 服务器上运行,然后sftp
返回文件(可能先压缩它)。
有关mongoexport的更多信息
我使用了@GianfrancoP 的答案,但不推荐使用语法。您现在需要包含要导出的字段名。这是更新的语法:
mongoexport --username user --password pass --host host --db database --collection coll --type=csv --fields fieldname
GianPaJ 给出的答案是我正在使用的解决方案,但缺点是它仅将导出的数据输出到远程主机,而不是您的客户端。
一种解决方法是对导出的文件使用 SCP 或 SFTP。如果我弄清楚如何使用 mongoexport 选项实际传输该文件,我将更新这篇文章。
我创建了这个命令来跳过 stfp 步骤来导出我的数据库。
ssh user@remote_host_ip "mongoexport --host localhost --db dbname --username username --password pass --authenticationDatabase admin --collection collectionname --fields field1,field2 --type=csv" >> export.csv
如果您在 mongodb 上应用了身份验证,则可以 ssh 远程并提供 mongodb 用户名、密码和身份验证数据库,否则跳过它。这将在本地系统上创建 export.csv。