我是mongoDB的新手,希望有人能暗示我如何完成这项任务。
我有一个opendata网址:
Q1:由于某种原因,这个Opendata并没有包含数据的时间范围,所以在我保存并将json文件导入到mongodb之前,我想在其中添加当前的时间帧,最有效的方法是什么这样做?
Q2:opendata将每5分钟更新一次,我想每5分钟将它同步到mongodb。(合并但不会覆盖,并且当记录相同时不合并)。 我的想法是使用crontab每5分钟执行一次脚本,但我不确定脚本是否应该使用mongoImport,因为看起来mongoImport会覆盖整个数据库文件,我希望合并而不是覆盖。那么有任何关于完成这项任务的建议吗?
PS:最后我可能会使用R来分析数据,但这是另一个故事,我需要做的第一项任务是定期导入数据。希望有人能给我一些指示。
感谢您的帮助!
最诚挚的问候 詹姆斯
答案 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仅用于将数据导出/导入备份/恢复数据库,或其他一些非常具体的用例,但不能用于正常的操作过程