设计数据结构

请注意,在 Cloud Firestore 中设计数据结构时,您可以使用几种不同的方案:

  • 文档
  • 多个集合
  • 在文档中使用子集合

请根据您的使用场景考虑每种选项的优势。本指南概述了分层数据的一些示例结构。

文档中的嵌套数据

您可以在文档中嵌套复杂的对象,例如数组(映射)。

- 优点:如果您想在文档中保存简单的固定数据列表,可使用此选项,它易于设置,而且可简化数据结构。 - 限制: 此方案的可扩缩性不如其他方案,特别是数据会随时间不断增加的情况。如果列表较大或者越来越大,文档也会变大,这可能导致文档检索时间增加。 - 此方案适用于哪些使用场景?例如,在聊天应用中,您可以将用户最近进入的 3 个聊天室作为嵌套列表存储在其个人资料中。 - alovelace - name :       first : “Ada”       last : “Lovelace”     born : 1815     rooms :       0 : “Software Chat”       1 : “Famous Figures”       2 : “Famous SWEs”

子集合

如果您的数据可能会随着时间的推移而增加,您可以在文档中创建集合。

- 优点:当您的列表变大时,父文档的大小不会改变。您还可以获得对子集合的完整查询功能,并且可以跨子集合发出集合组查询。 - 限制:您无法轻松删除子集合。 - 此方案适用于哪些使用场景?例如,在前述聊天应用中,您可以在聊天室文档中为用户或消息创建集合。 - science - software   name : “software chat” - users - alovelace     first : “Ada”     last : “Lovelace” - sride     first : “Sally”     last : “Ride”` - astrophysics - ...

根级集合

在数据库的根级别上创建集合,以整理不同的数据集。

- 优点:根级集合适合多对多关系,并在每个集合内提供强大的查询功能。 - 限制:随着数据库增大,获取自然分层的数据可能会变得越来越复杂。 - 此方案适用于哪些使用场景?例如,在前述聊天应用中,您可以为用户创建一个集合,为聊天室和消息创建另一个集合。 - users - alovelace     first : “Ada”     last : “Lovelace”     born : 1815 - sride     first : “Sally”     last : “Ride”     born : 1951 - rooms - software - messages - message1     from : “alovelace”     content : “...” - message2     from : “sride”     content : “...”