1

我的数据提供者有一个带有我的数据的 MongoDB 远程实例,我可以通过 SSH 访问它。目前,我使用命令查询 MongoDB

mongoexport -d database -c collection --csv --out result.csv --q '{"date":{"$gte":new Date(1338480000000),"$lte": new Date(1338915599000)}}'

从那里我一直在使用 WinSCP 将生成的 JSON 文件的副本从远程 linux shell 传输到我的本地 Windows 笔记本电脑。

问题是,从现在开始,理想情况下,每次将新条目(“事件”)添加到 MongoDB 时,我都需要让它自动运行导出,并且它必须自动 SCP 或以其他方式将生成的 JSON 文件推送到公司 linux VPS。这就是我公司的 CS 人员所说的“事件驱动的导出”。我不知道如何做到这一点,数据提供者也不知道,我也无法通过 Google-ing 弄清楚。

如果不可能,那么我会满足于让 cronjob 每 1 分钟运行一次,并将最后 1 分钟的数据从 MongoDB 导出为 JSON 文件,然后将该文件 SCP 到我公司的 linux 服务器。我真的可以使用一些帮助来确定如何编写查询以及如何让 mongoexport 按顺序保存文件名(以避免覆盖同一个文件),然后告诉 SCP 发送一份最新的副本。

4

1 回答 1

0

“事件驱动导出”将是一件相当复杂的事情,因为必须在数据提供者端检测到事件(数据已插入),然后将通知发送到您公司的 linux 系统。

事件检测可能意味着对 MongoDB 日志文件 (tail -f) 的调查,这不是很可靠 - 如果检测器失败并且必须重新启动怎么办?

可能最简单的解决方案是在您公司的 linux 系统上运行一个 MongoDB 客户端,该客户端连接到数据提供者的数据库并定期检查新数据(通过检查最新的“日期”条目)。然后它将直接获取新数据,而不是繁琐的导出机制。

该调查客户端程序可以在永久循环中等待(休眠),也可以由 cron 定期启动。

于 2013-04-03T23:18:17.440 回答