如何将子集合添加到 Firebase Cloud Firestore 中的文档

2024-04-19

该文档没有任何有关如何将子集合添加到文档的示例。我知道如何将文档添加到集合以及如何将数据添加到文档,但是如何将集合(子集合)添加到文档?

难道不应该有这样的方法:

dbRef.document("example").addCollection("subCollection")

2021 年 1 月 13 日编辑:

根据有关更新的文档数组成员资格 https://firebase.google.com/docs/firestore/query-data/queries#array_membership,现在可以使用基于数组值过滤数据whereArrayContains()方法。一个简单的例子是:

CollectionReference citiesRef = db.collection("cities");
citiesRef.whereArrayContains("regions", "west_coast");

此查询返回每个城市文档,其中 Regions 字段是包含 west_coast 的数组。如果数组具有您查询的值的多个实例,则该文档仅包含在结果中一次。


假设我们有一个聊天应用程序,其数据库结构如下所示:

写一个subCollection在文档中,请使用以下代码:

DocumentReference messageRef = db
    .collection("rooms").document("roomA")
    .collection("messages").document("message1");

创建一个messages采集与调用addDocument()1000 次肯定会很贵,但这就是 Firestore 的工作原理。如果您希望写入次数不重要,您可以切换到 Firebase 实时数据库。但关于支持的数据类型 https://firebase.google.com/docs/firestore/manage-data/data-types在Firestore中,事实上,你可以使用数组,因为它是支持的。在Firebase 实时数据库 https://firebase.google.com/docs/database/android/read-and-write你也可以使用array,但这是一种反模式。 Firebase 建议不要使用数组的众多原因之一是它使安全规则无法编写。

Cloud Firestore 可以存储数组,但不支持查询数组成员或更新单个数组元素。不过,您仍然可以利用 Cloud Firestore 的其他功能对此类数据进行建模。Here https://firebase.google.com/docs/firestore/solutions/arrays是文档,对此进行了很好的解释。

您也无法创建包含 1000 条消息的子集合,将它们全部添加到数据库中,并期望将其视为单个记录。每条消息将被视为一次写入操作,总共 1000 次操作。上图没有显示如何检索数据,它显示了一个数据库结构,其中有这样的内容:

collection -> document -> subCollection -> document
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将子集合添加到 Firebase Cloud Firestore 中的文档 的相关文章

随机推荐