在mongodb的新集合中保留来自另一个集合的字段更改历史记录

时间:2013-12-05 09:11:54

标签: mongodb mongodb-php

这是我的问题:

我有一个约900k条目的集合,它大约是6Gb,这将每天更新,至少一段时间。通过更新我的意思是,从json文件转储和导入,我们每天都会得到(这可能只是临时解决方案)。

我目前正在处理的问题是在一个单独的集合中保留4,5个字段的历史记录,这些字段将在主集合的每次“更新”之前/之后更新。

我所做的是获取所有记录并循环遍历每个条目的结果更新历史记录集合,但运行~900k更新查询耗费时间/资源,我认为这不是一个好习惯。

我想到的结构是这样的:

{unique_id: 'unique value from main collection', 
 history: [
           {field1: value1, 
            field2: value2, 
            field3: 'value3', 
            date_updated: '2013-12-03'
           },
           {...}
          ]
}

我也尝试了mapreduce,输出到收集,这要快很多,mapreduce的问题是我无法保留历史记录,因为“action”param的选项都没有做我需要的,每次运行时,它都会覆盖条目,我需要它做的就像一个upsert。

如果有人对如何做到这一点有一些想法,我会很乐意让他们去测试,我没有想法,我也不是mongodb的大师。

我认为导入/更新解决方案也不好,我也在寻找解决方案,但首先要完成历史记录。

0 个答案:

没有答案