所有Firestore数据检索示例都显示返回的完整文档。像这样的例子:
// Create a reference to the cities collection
CollectionReference citiesRef = db.collection("cities");
// Create a query against the collection.
Query query = citiesRef.whereEqualTo("state", "CA");
我的数据库中有3,000个城市对象,我需要获取数据库中所有唯一状态的列表。有人能告诉我一个如何从Firestore获取此信息的示例吗?我希望我不需要下载所有3000个文档,只是为了自己整理这个列表。
答案 0 :(得分:1)
您可以创建一个由onWrite
事件触发到您的cities
集合的云功能。此函数可以查看state
集合中是否已存在states
,如果没有,则添加它。
这样,您最终会得到一个states
集合,其中只有一个state
。由于状态通常是2个字母的代码,因此您可以使用此代码作为文档索引,以确保云函数写入的唯一性。
答案 1 :(得分:1)
正如弗兰克所说,实现这一目标的唯一方法是通过复制数据。这个tehnique被命名为非规范化,为此,我会与你分享另一个资源,这是我个人建议你看到的更好理解的教程,Denormalization is normal with the Firebase Database。本教程是针对Firebase实时数据库制作的,但Cloud Firestore中也有相同的原则。
因此,要解决您的问题,您需要创建另一个顶级集合,您只需要存储唯一的状态。但是你需要知道每次添加或删除文档时,你需要做两次,一次是你已经拥有的cities
集合,另一次是新创建的集合{{1} }。