我需要远程调用mongoexport并从node.js获取结果

9

我不确定如何操作,需要将mongodb collection导出为.csv文件。在node.js中使用spawn.child_process调用mongoexport可以完成这个任务,但是我的mongodb服务器和node服务器目前在不同的机器上。

我该如何从我的node服务器远程调用mongoexport在mongo服务器上运行,然后将.csv文件传输到node服务器上?

4个回答

20

首先,请确保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命令,在MongoDb服务器上运行mongoexport,然后sftp回文件(可能首先进行压缩)。

有关mongoexport的更多信息


这绝对是正确的方法。当我尝试登录时,出现了“身份验证失败”的错误。我的用户没有密码,所以在mongoexport中我将该字段留空。我确实使用私钥来ssh到这些服务器,这是否需要在这里发挥作用? - Josh Elias
你可以在 ssh -i identity_file 中指定 sshkey,但这是另一个话题。 - Gianfranco P.
似乎可以在未设置用户名或密码的情况下运行。 - Josh Elias

3

我使用了@GianfrancoP的答案,但语法已经过时。现在您需要包括要导出的字段名。这是更新后的语法:

mongoexport --username user --password pass --host host --db database --collection coll --type=csv --fields fieldname

0

我创建了这个命令,以跳过sftp步骤来导出我的数据库。

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文件。


0

GianPaJ提供的答案是我正在使用的解决方案,然而一个缺点是只将导出的数据输出到远程主机,而不是到您的客户端。

一个解决方法是在导出文件上使用SCP或SFTP。如果我想出如何使用mongoexport选项转移该文件,我会更新此帖子。


1
mongoexport --host {host} -f {fields} -d {db} - c {coll} --csv -o {absolute_local_path} 会将指定路径下的文件保存在本地。 - David Barker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接