所以,我一直在观看this视频,以便学习MongoDB数据建模。在一对多的关系中,演讲者谈到三种不同的方式:
那么,嵌入式数组键和规范化类之间有什么区别?嵌入式数组是不是还引用了另外两个集合?
答案 0 :(得分:1)
差异很简单(不幸的是,该视频中有点令人困惑)。
想象一下博客文章(Post
)和评论(Comment
)的建模。
Post
文档包含所有Comment
文档的所有ID的数组。 Comment
存储在单独的文档(和/或集合)中。Post
文档包含嵌入的Comment
。它们不存储在不同的文档中或存储在自己的集合中。虽然这表现得非常好,但BSON文档的大小限制为16MB,这可能更难以使用。Post
文档和Comment
分开存储。但是,在这种情况下,Comment
文档具有返回Post
的外键引用。因此,它可能有一个名为postId
的字段。它会引用与Post
相关的Comment
。此模式与#1不同,因为Post
文档不包含Comments
列表。因此,虽然此选项使得注释的数量基本上无限制/无限制,但如果没有构建特定的索引(例如postId
,commentDate
可能有用),它可能会使注释的检索效率更低