多态数据
MongoDB使用灵活数据模型,这意味着单个集合中的文档不需要具有相同的结构。多态数据是单个集合中的数据,但其文档字段或数据类型各不相同。
一般来说,集合中的文档结构相似,但根据应用程序的不同,可能略有不同。要将相似的不同文档群组到单个集合中,可以使用多态和继承模式设计模式。
这些模式设计可以根据查询访问权限模式存储数据,而不是严格根据文档结构存储数据,从而提高性能。
用例
Scenario | 设计模式应用程序 |
---|---|
您的应用程序追踪不同运动项目的职业运动员。您的查询会访问权限所有运动员,但为每位运动员存储的属性会因其运动项目而异。 | 使用多态模式将 actor群组到单个集合中。即使文档具有不同的结构,仍然可以通过单个查询来访问它们。 |
您的应用程序跟踪书店中的图书。图书有不同的形式:电子书、印刷版或有声读物。所有书籍股票 title 、 author 和genre 字段,但根据其格式,还有其他不同字段。 | 使用继承模式将书籍群组到单个集合中。每种图书格式都是 book 父实体的子实体,提供所有格式的title 、 author 和genre 共享字段。尽管子实体还有其他不同的字段,但父实体的共享字段允许将它们分组到单个集合中。 |