gpt4 book ai didi

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

转载 作者:技术小花猫 更新时间:2023-10-29 10:16:09 24 4
gpt4 key购买 nike

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

不应该有这样的方法吗:

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

最佳答案

2021 年 1 月 13 日编辑:

根据有关 array membership 的更新文档,现在可以使用 whereArrayContains() 方法根据数组值过滤数据。一个简单的例子是:

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

This query returns every city document where the regions field is an array that contains west_coast. If the array has multiple instances of the value you query on, the document is included in the results only once.


假设我们有一个聊天应用程序,其数据库结构与此类似:

enter image description here

要在文档中编写subCollection,请使用以下代码:

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

如果您想创建 messages 集合并调用 addDocument() 1000 次肯定会很昂贵,但这就是 Firestore 的工作方式。如果需要,您可以切换到 Firebase 实时数据库,写入次数无关紧要。但是关于 Supported Data Types实际上,在 Firestore 中,您可以使用数组,因为它受支持。在 Firebase Realtime database您也可以使用 array,但这是一种反模式。 Firebase 不建议使用数组的众多原因之一是它使安全规则无法编写。

Cloud Firestore 可以存储数组,不支持查询数组成员或更新单个数组元素。但是,您仍然可以利用 Cloud Firestore 的其他功能对此类数据建模。 Here是解释得很好的文档。

您也不能创建包含 1000 条消息的子集合并将它们全部添加到数据库,同时考虑单个记录。每条消息都将被视为一次写操作。总共 1000 次操作。上图没有显示如何检索数据,它显示了一个数据库结构,其中你有这样的东西:

collection -> document -> subCollection -> document

关于java - 如何将子集合添加到 Firebase Cloud Firestore 中的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47514419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com