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

Posted

技术标签:

【中文标题】我需要远程调用 mongoexport 并从 node.js 获取结果【英文标题】:I need to call mongoexport remotely and get the result from node.js 【发布时间】:2012-10-14 09:56:36 【问题描述】:

我不知道该怎么做,我需要将 mongodb 集合导出为 .csv。在节点中使用 spawn.child_process 调用 mongoexport 将完成此操作,但我的 mongodb 服务器和节点服务器当前位于不同的机器上。

如何从我的节点服务器远程调用我的 mongo 服务器上的 mongoexport,然后将 .csv 获取到节点服务器?

【问题讨论】:

【参考方案1】:

我创建了这个命令来跳过 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。

【讨论】:

【参考方案2】:

首先,确保 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 连接到这些服务器,这需要在这里发挥作用吗? 您可以在ssh -i identity_file 上指定 sshkey,但这是另一个主题 它似乎在没有设置用户名或密码的情况下运行【参考方案3】:

我使用了@GianfrancoP 的答案,但不推荐使用该语法。您现在需要包含要导出的字段名。这是更新的语法:

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

【讨论】:

【参考方案4】:

GianPaJ 给出的答案是我正在使用的解决方案,但缺点是它仅将导出的数据输出到远程主机,而不是您的客户端。

一种解决方法是对导出的文件使用 SCP 或 SFTP。如果我知道如何使用 mongoexport 选项实际传输该文件,我将更新这篇文章。

【讨论】:

mongoexport --host host -f fields -d db - c coll --csv -o absolute_local_path 为我在本地保存以绝对路径指定的文件。

以上是关于我需要远程调用 mongoexport 并从 node.js 获取结果的主要内容,如果未能解决你的问题,请参考以下文章

如何从远程仓库中的 master 删除 GIT 分支并从另一个分支启动新分支?

如何将本地分支 A 中的多个本地提交推送到远程分支 B 并从本地分支 A 中清除它们?

远程客户端上的调用方法

OpenFeign实现服务发现远程调用以及负载均衡-SpringCloudAlibaba No.2

git连接不上远程仓库---visualstudio提交代码报错:no upstream configured for branch 'master'

Jenkins使用jenkins-cli.jar进行远程调用时出现“ERROR: No such job 'test'”的问题解决(Windows)