選擇資料結構

請注意,在 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"`


    • 天體物理學
      • ...

根層級集合

在資料庫的根層級建立集合,整理不同的資料集。

  • 優點:根層級集合適用於多對多關係,並可在每個集合中提供強大的查詢功能。
  • 限制:隨著資料庫成長,擷取自然階層式資料可能會越來越複雜。
  • 可能的用途為何?舉例來說,您可以在同一個即時通訊應用程式中,為使用者建立一個集合,並為聊天室和訊息建立另一個集合。
  • 使用者
    • alovelace
          first : "Ada"
          last : "Lovelace"
          born : 1815
    • sride
          first : "Sally"
          last : "Ride"
          born : 1951
  • 間會議室
    • 軟體
      • 訊息
        • message1
              from : "alovelace"
              content : "..."
        • message2
              from : "sride"
              content : "..."