我有一个MongoDB数据库,有两个集合:
- groups: {group_slug, members}
- users: {id,显示名,组}
对组的所有更改都是通过更改组的成员数组来包含用户id来完成的。
我想通过使用map/reduce将这些更改同步到users集合。如何将map/reduce的结果输出到现有集合(但不是合并或减少)。
我现有的代码在这里:https://gist.github.com/morgante/5430907
如何将map/reduce的结果输出到现有集合
你真的不能这样做。这也不是真正的建议行为。还有其他解决方案:
解决方案# 1:
- 将map/reduce输出到临时集合
- 运行从临时收集更新主数据存储的后续任务
- 清理临时收集
老实说,这是一个安全的方法。您可以在整个循环中实现一些基本的重试逻辑。
解决方案2:
- 将更改放到Queue中。(。)
- 从侦听队列中此类事件的不同工作线程更新两个表。
这个解决方案可能需要一个单独的部分(队列),但是任何大型系统都会有这样的非规范化问题。所以你不只在这里看到这个