选择数据结构

请注意,在 Cloud Firestore 中设置数据结构时,您可以使用几种不同的选项:文档、多个集合以及在文档中使用子集合。请根据您的实际应用场景考虑每种选项的优势。

文档中的嵌套数据

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

  • 优点:如果您想在文档中保存简单的固定数据列表,可使用此选项,它的设置过程很简单,而且数据结构也不复杂。
  • 限制:您无法对嵌套列表运行查询。此外,此选项的可扩展性不如其他选项,特别是如果您的数据会随时间的推移而不断增加的话。如果列表较大或者越来越大,文档也会变大,这可能导致文档检索时间增加。
  • 此选项适用于哪些使用情形? 例如,在聊天应用中,您可以将用户最近进入的 3 个聊天室作为嵌套列表存储在其个人资料中。
  • class alovelace
    •     name :
            first : "Ada"
            last : "Lovelace"
          born : 1815
          rooms :
            0 : "Software Chat"
            1 : "Famous Figures"
            2 : "Famous SWEs"

子集合

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

  • 优点:当您的列表变大时,父文档的大小不会改变。您还可以在子集合中使用完整的查询功能。
  • 限制:子集合删除起来不方便,而且也难以跨子集合执行复合查询。
  • 此选项适用于哪些使用情形? 例如,在前述聊天应用中,您可以在聊天室文档中为用户或消息创建集合。
  • collections_bookmark science
    • class software
        name : "software chat"
      • collections_bookmark users
        • class alovelace
              first : "Ada"
              last : "Lovelace"
        • class sride
              first : "Sally"
              last : "Ride"`


    • class astrophysics

根级集合

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

  • 优点:根级集合可提供最大程度的灵活性和可扩展性,并在每个集合中提供强大的查询功能。
  • 限制:随着数据库增大,获取自然分层的数据可能会变得越来越复杂。
  • 此选项适用于哪些使用情形? 例如,在前述聊天应用中,您可以为用户创建一个集合,为聊天室和消息创建另一个集合。
  • collections_bookmark users
    • class alovelace
          first : "Ada"
          last : "Lovelace"
          born : 1815
    • class sride
          first : "Sally"
          last : "Ride"
          born : 1951
  • collections_bookmark rooms
    • class software
      • collections_bookmark messages
        • class message1
              from : "alovelace"
              content : "..."
        • class message2
              from : "sride"
              content : "..."

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面