【问题标题】:MongoDB/Mongoose: many to many relationshipMongoDB/Mongoose:多对多关系
【发布时间】:2014-01-21 07:47:19
【问题描述】:
我有两个 Mongoose 模式 Post 和 Tag,我想设计它们之间的多对多关系。我想知道哪一个是表演的最佳解决方案:
- 在 Tag 和 Post 模型中,都保留一个数组来引用其他模式的模型(每个 Tag 都有许多帖子在 id 数组中引用,反之亦然)
- 仅将
Tag id 数组保留在 Post 架构中
第二种解决方案似乎更容易实现,因为当我编辑与一篇文章相关的标签列表时,只需修改一个数组,但同时在获取属于一个标签的所有文章时性能可能会降低
【问题讨论】:
标签:
mongodb
mongoose
database
【解决方案1】:
仅在 Post 架构中保留标签 ID 数组
我肯定会使用更直接的第二种解决方案。
除非您有特殊要求,否则您不需要让每个 Tag 明确跟踪 Post 引用。 Tag 文档中的 Post 引用数组实际上是无限大小的。这种使用模式往往会为流行的文档造成存储碎片和/或性能问题,这些文档的分配记录空间经常超过record padding。
另一方面,单个帖子中使用的标签数量不太可能随着时间的推移而发生很大变化,您可以通过在 Post 集合中的 Tag 数组上添加索引来提高此查询的性能。