我正在生成存储在mongo中的分析。这些分析存储在需要更新统计信息时上载的文档中。
让我们说我的统计文档包含两个字段:fieldA
和fieldB
标识我在计算的内容以及包含我的统计信息的字段sum
。现在,我希望每个fieldA
和fieldB
值的组合都有一个文档,每次有新的计数时,字段sum
都会更新。
逻辑选择是upsert,但它不是原子的,因此它可能会生成具有相同fieldA
和fieldB
值的文档重复。因此,我需要找到一种方法,在fieldA
和fieldB
的组合上添加一些唯一索引。但我想避免使用复合索引,这似乎是一种非常昂贵的方法。
目前我正在创建一个hash(fieldA + fieldB)
(md5)并将其存储为id,但在我看来,它更像是一个黑客而不是一个真正的解决方案。同时它是我能想到的最便宜的解决方案,因为它使用已经存在的id的索引。这个解决方案似乎合适吗?它会在以后产生一些Mongo故障吗?应该将它集成到像Spring Data这样的Mongo客户端吗?