Android 在Cloud Firestore中将某些对象作为字段存储在文档中,而不是作为文档存储在子集合中?

Android 在Cloud Firestore中将某些对象作为字段存储在文档中,而不是作为文档存储在子集合中?,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我想在Cloud Firestore中存储多个对象?以下哪种方法在成本和性能方面更有效: 将对象存储为文档中的字段 是否将对象作为文档存储在子集合中 这是否也取决于 如果 我必须立即从数据库中检索所有这些对象 或者如果 我必须一次只从数据库中检索一个特定的对象 这取决于要存储的文档的种类和数量 在CloudFireStore中,存储单元是文档。文档是一种轻量级记录,它包含映射到值的字段 文档中复杂的嵌套对象称为映射。例如,您可以在数据库中构造用户名,如下所示: name | --- firs

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

  • 将对象存储为文档中的字段
  • 是否将对象作为文档存储在子集合中
  • 这是否也取决于

    如果

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

  • 我必须一次只从数据库中检索一个特定的对象

  • 这取决于要存储的文档的种类和数量

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

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

    name
     |
     --- first: "fistName"
     |
     --- last: "lastName"
    
    您可能会注意到文档看起来很像JSON。事实上,基本上是这样。有一些区别(例如,文档支持额外的数据类型,并且大小限制为1MB),但一般来说,您可以将文档视为轻量级JSON记录

    从官方文件:

    CloudFireStore是无模式的,所以您可以完全自由地选择在每个文档中放置哪些字段以及在这些字段中存储哪些数据类型。同一集合中的文档都可以包含不同的字段,也可以在这些字段中存储不同类型的数据。但是,最好在多个文档中使用相同的字段和数据类型,以便更轻松地查询文档

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

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

    关于最后一个问题,当然是第二个解决方案,将对象作为文档存储在子集合中


    但有关此主题的更多详细信息,请参阅。

    Ohh谢谢!但是如果我将多个对象作为字段存储在一个文档中,不是很有好处吗?比如,我可以通过读取一个文档来检索所有对象?那么,这不会比在一个子集合中下载多个文档的成本更低吗?正如我在回答中写到的,文档中的这种对象称为
    映射
    。当Firestore由许多小文档组成时,它会自动缩放。但是请记住,文档的大小限制为1MB。如果创建单独的文档,则文档数量没有限制。请参阅Firestore限制。有关您的用例的更多信息肯定会有所帮助。例如,如果需要能够查询具有特定字段值的多个文档,则应使用映射。请记住文档大小限制。实现结果的更为冗长的方法可能是使用子集合。它将更好地扩展,并提供更大的访问控制。你的问题很笼统。如果成本是你最关心的,那么我会考虑你必须阅读大量的文件,然后你需要担心太多,嘿,Mamo,我想在cloud Firestore中使用objects结构,其中的值从数组中读取,即数组元素将存储在cloud Firestore中。这是它的开始代码。@DivyaGalla我看不到任何代码。但是为了遵守这个社区的规则,请发布另一个新的问题,这样我和其他用户可以帮助你。