我的数据提供者有一个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来解决这个问题。
如果不可能,那么我会满足于每1分钟运行一次cronjob并将最后1分钟的数据从MongoDB导出为JSON文件,然后将SCP存档到我公司的linux服务器。我真的可以使用一些帮助来确定如何编写查询以及如何使mongoexport按顺序保存文件名(以避免覆盖同一文件),然后告诉SCP发送最新版本的副本。
答案 0 :(得分:0)
“事件驱动导出”将是一件相当复杂的事情,因为必须在数据提供者端检测事件(插入数据),然后发送通知发送到您公司的Linux系统。
事件检测可能意味着对MongoDB日志文件(tail -f)的调查,这是不可靠的 - 如果检测器发生故障并且必须重新启动,该怎么办?
最简单的解决方案是在公司Linux系统上运行MongoDB客户端,该客户端连接到数据提供者的数据库,并定期检查新数据(通过检查最新的“日期”条目)。然后它将直接获取新数据,而不是繁琐的导出机制。
此调查客户端程序可以在永久循环中等待(休眠),也可以由cron定期启动。