2013-07-31 69 views
0

我有一个叫做Products的猫鼬模型,我从外部系统(谷歌电子表格)提供。如何保持两个只读集合与猫鼬同步

每当电子表格发生变化时,我都会收到一个事件,我需要找出相应的变化并更新Products集合。

的最简单的方法我虽然约是:

  1. 在电子表格中更改事件,删除所有文件Product收集
  2. 插入的产品我从电子表格钻进Products再次收集整个新的集合。

这样做效率不高,但它是一个简单而干净的解决方案,假设集合不是很大,并且不会频繁更新。

我能想到的任何其他方法都涉及迭代更新后的Google电子表格和Products集合并将它们相互比较。

是否有继承的方式呢?也许更有效的算法?

+0

为什么不使用'$ set'运算符更新文档? –

回答

0

我的建议是插入一个带有临时名称的新的空集合,然后重命名为以原子方式覆盖现有的集合。

您也可以考虑对每个已在电子表格中创建或更新的文档执行upsert,然后删除所有已删除的文档。