我有一个包含2个主要集合的MongoDB数据库。数据库存储不时到达的原始数据和Web应用程序使用的已处理数据。
RAW
:这里我存储了永远不应修改的原始数据。只有当新的原始数据到达时,它才能插入新的文档。为了示例,我们可以假设此集合中的每个文档都对应一个产品。PRODUCTS
:这里我存储了与产品相对应的文档(我在RAW
中存储的同一组产品,但此处产品还有一些其他字段)。一般的想法是,一旦新的原始数据到达,新文档也会插入到此集合中,但首先我会计算一些额外的指标并向新文档添加其他字段。此集合还与Web应用程序进行通信,通过该应用程序,用户不仅可以浏览数据,还可以修改某些字段(这是我希望RAW
与Web应用程序完全分离的原因之一。)所以这就是问题:我应该在两个集合中有单独的ObjectId
主索引(因此它们的_id
字段之间没有关系),或者使用相同的{{1在两个集合中。
在我看来,第二种方法可能更好,因为它节省了我建立一个索引(否则在_id
集合中我将不得不维护PRODUCTS
和其他一些领域的索引能够将文件从_id
映射到PRODUCTS
)。
但是,我也相信这个策略可能存在问题,我看不到。
所以,我会对这个问题的任何提示表示感谢。
答案 0 :(得分:0)
根据我的理解,PRODUCTS
集合将包含从RAW
集合派生的条目。在这种情况下,我在重新使用_id
集合中RAW
集合的PRODUCT
字段时看不到任何问题。
话虽如此,最好使用您的应用程序和您的预期使用模式来测试此设计。从MongoDB方面来看,_id
只需要在单个集合中是唯一的,因此跨两个不同集合的重复_id
条目不会造成问题。如果对_id
值存在任何混淆,则可能会在应用程序层而不是数据库层中发生。