如何定期将opendata(Json文件)更新到mongoDB

时间:2015-08-25 12:35:29

标签: mongodb mongodb-query

我是mongoDB的新手,希望有人能暗示我如何完成这项任务。

我有一个opendata网址:

http://data.taipei/opendata/datalist/apiAccess?scope=resourceAquire&rid=9ba187c9-b07e-40bc-9aa5-8d3c9f1aad63

Q1:由于某种原因,这个Opendata并没有包含数据的时间范围,所以在我保存并将json文件导入到mongodb之前,我想在其中添加当前的时间帧,最有效的方法是什么这样做?

Q2:opendata将每5分钟更新一次,我想每5分钟将它同步到mongodb。(合并但不会覆盖,并且当记录相同时不合并)。 我的想法是使用crontab每5分钟执行一次脚本,但我不确定脚本是否应该使用mongoImport,因为看起来mongoImport会覆盖整个数据库文件,我希望合并而不是覆盖。那么有任何关于完成这项任务的建议吗?

PS:最后我可能会使用R来分析数据,但这是另一个故事,我需要做的第一项任务是定期导入数据。希望有人能给我一些指示。

感谢您的帮助!

最诚挚的问候 詹姆斯

1 个答案:

答案 0 :(得分:0)

我不知道究竟是什么数据,但我的建议是解析json文件,然后更新或创建现有字段,并添加“updated_at”字段。这是伪代码:

for each elem in json["results"] do

     existing = Data.where(:id=>elem["id"]).first  # find if there is already a field for this id

     if existing==null then   # if no create it
         existing = Data.new(:id=>elem["id"])
     end
     existing.update(elem)    # update all json data, depending of your language
     existing.updated_at=Time.now
     existing.save
end

mongoImport仅用于将数据导出/导入备份/恢复数据库,或其他一些非常具体的用例,但不能用于正常的操作过程