将Cloud Firestore中的某些对象存储为文档中的字段,并将其作为文档存储在子集合中?

时间:2018-02-08 13:44:41

标签: android firebase google-cloud-firestore

我想在Cloud Firestore中存储多个对象?以下哪种方法在成本和性能方面更有效:

  1. 将对象存储为文档中的字段
  2. 将对象存储为子集合中的文档吗?
  3. 它还取决于

    如果

    1. 我必须立即从数据库中检索所有这些对象
    2. 或如果

      1. 我必须立即从数据库中检索特定对象吗?

1 个答案:

答案 0 :(得分:1)

这取决于您要存储的文件类型和数量。

在Cloud Firestore中,存储单元是文档。文档是一个轻量级记录,包含映射到值的字段。

文档中复杂的嵌套对象称为贴图。例如,您可以在数据库中构造用户名,如下所示:

name
 |
 --- first: "fistName"
 |
 --- last: "lastName"

您可能会注意到文档看起来很像JSON。事实上,他们基本上是。存在一些差异(例如,文档支持额外的数据类型,并且大小限制为1 MB),但通常,您可以将文档视为轻量级JSON记录。

来自官方文件:

  

Cloud Firestore是无模式的,因此您可以完全自由地放置每个文档中的字段以及存储在这些字段中的数据类型。同一集合中的文档可以包含不同的字段,也可以在这些字段中存储不同类型的数据。但是,在多个文档中使用相同的字段和数据类型是个好主意,这样您就可以更轻松地查询文档。

     

集合包含文档而不包含任何其他内容。它不能直接包含带有值的原始字段,也不能包含其他集合。

想象一下,您有聊天室,决定如何存储您的消息。您可能不希望将它们存储在聊天室的文档中。 Cloud Firestore中的文档应该是轻量级的,聊天室可能包含大量消息。但是,您可以在聊天室的文档中创建其他集合,作为子集合。

关于你的上一个问题,绝对是第二个解决方案,将对象存储为子集合中的文档。

但有关此主题的更多详情,请参阅here