我不确定如何操作,需要将mongodb collection导出为.csv文件。在node.js中使用spawn.child_process调用mongoexport可以完成这个任务,但是我的mongodb服务器和node服务器目前在不同的机器上。
我该如何从我的node服务器远程调用mongoexport在mongo服务器上运行,然后将.csv文件传输到node服务器上?
我不确定如何操作,需要将mongodb collection导出为.csv文件。在node.js中使用spawn.child_process调用mongoexport可以完成这个任务,但是我的mongodb服务器和node服务器目前在不同的机器上。
我该如何从我的node服务器远程调用mongoexport在mongo服务器上运行,然后将.csv文件传输到node服务器上?
首先,请确保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的更多信息
我使用了@GianfrancoP的答案,但语法已经过时。现在您需要包括要导出的字段名。这是更新后的语法:
mongoexport --username user --password pass --host host --db database --collection coll --type=csv --fields fieldname
我创建了这个命令,以跳过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文件。
GianPaJ提供的答案是我正在使用的解决方案,然而一个缺点是只将导出的数据输出到远程主机,而不是到您的客户端。
一个解决方法是在导出文件上使用SCP或SFTP。如果我想出如何使用mongoexport选项转移该文件,我会更新此帖子。
mongoexport --host {host} -f {fields} -d {db} - c {coll} --csv -o {absolute_local_path}
会将指定路径下的文件保存在本地。 - David Barker
ssh -i identity_file
中指定 sshkey,但这是另一个话题。 - Gianfranco P.