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