Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

选择数据结构

请注意,在 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 : "..."