我有一个名为访问的集合,其中我保存了有关访问引荐来源,页面,关键字,日期等信息的文档。
我认为关键字可以被视为一个集合,对于 Page 也是如此。 这将迫使我创建不同的集合,但我不确定这是否是正确的方法。
在传统的数据库模型中,它们显然存储在与FK连接的单独表中。
答案 0 :(得分:3)
MongoDB的一个好处是它能够嵌入文档。
Visits集合中的文档包含关键字和页面子文档是完全合理的。
经验法则是为速度嵌入文档,使文档标准化以保持一致性。
如果您将“关键字”和“页面”文档嵌入“访问”文档中,则您的应用程序只需进行一次查询即可检索所有相关信息。 (速度)
但是,缺点是如果更新了关键字和/或页面信息,则必须在其出现的每个其他“访问”文档中进行更新。如果许多不同的访问文档将依赖于相同的关键字和页面文档,则最好将它们保存在单独的集合中,尤其是如果它们将经常更改。 (稠度)
这当然是一种概括,最终取决于您,应用程序开发人员决定哪种方法最适合您的独特情况。 Mongo文档中有关于嵌入与链接的其他信息,标题为“模式设计” http://www.mongodb.org/display/DOCS/Schema+Design
您可能还会发现文章“MongoDB Data Modeling and Rails”是有益的: http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails 这个例子在Rails中给出,但文档设计理论适用于任何语言。
祝你好运!