我需要远程调用mongoexport并从node.js获取结果
我不知道该怎么做,我需要将mongodb集合导出为.csv。在节点中使用spawn.child_进程调用mongoexport将完成此任务,但我的mongodb服务器和节点服务器当前位于不同的计算机上我需要远程调用mongoexport并从node.js获取结果,node.js,mongodb,csv,remote-server,Node.js,Mongodb,Csv,Remote Server,我不知道该怎么做,我需要将mongodb集合导出为.csv。在节点中使用spawn.child_进程调用mongoexport将完成此任务,但我的mongodb服务器和节点服务器当前位于不同的计算机上 如何从节点服务器远程调用mongo服务器上的mongoexport,然后将.csv发送到节点服务器?首先,确保MongoDB端口已打开,并且您可以从服务器进行连接。 然后,使用 mongoexport --username user --password pass --host host --db
如何从节点服务器远程调用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
如果服务器位于公共网络中,请确保使用身份验证
或者,运行ssh命令可能更简单,在MongoDb服务器上运行mongoexport
,然后sftp
返回文件(可能先压缩)
更多信息GianPaJ给出的答案是我正在使用的解决方案,但缺点是它只将导出的数据输出到远程主机,而不是您的客户端
一种解决方法是在导出的文件上使用SCP或SFTP。如果我知道如何使用mongoexport选项传输该文件,我将更新这篇文章。我使用了@GianfrancoP的答案,但语法不推荐使用。现在需要包括要导出的字段名。以下是更新的语法:
mongoexport --username user --password pass --host host --db database --collection coll --type=csv --fields fieldname
我创建此命令是为了跳过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。这绝对是正确的方法。尝试登录时出现“身份验证失败”错误。我的用户没有密码,所以我在mongoexport中将该字段留空。我确实使用私钥ssh进入这些服务器,这需要在这里发挥作用吗?您可以在
ssh-I identity_文件
上指定sshkey,但这是另一个主题,它似乎在运行时没有设置用户名或传递mongoexport--host{host}-f{fields}-d{db}-c{coll}--csv-o{absolute local path}
在本地为我保存绝对路径中指定的文件。