Firebase通过字段和计数方法实现订单

时间:2019-03-21 10:55:54

标签: firebase google-cloud-firestore

我有一些时间表,其中包含具有此类字段的文档 enter image description here 我想通过运行按route字段排序并执行相同字段计数的查询来获得流量最高的路由。我的问题是按字段订购后如何计数?这是我现在的查询

scheduleByRoutes() {
    return this.afs.collection('schedules', ref => ref.orderBy('route', 'asc')).snapshotChanges();
}

1 个答案:

答案 0 :(得分:0)

没有直接方法来计算orderBy()查询返回的每个route“类别”的文档数。

您应该:

1 /从您的客户端计数它们,重复查询结果。

2 /如果您预先知道不同的路由,请对每个route发出查询,并使用每个QuerySnapshot的{​​{3}}方法。您可以使用Promise.all()并行进行这些调用。

3 /例如,为另一个集合中的每个route维护一些计数器。为此,您将使用一组云功能,这些功能将在创建/修改/删除后更新计数器。

请注意,方法#1和#2将耗费集合中每个文档的读取文档费用。如果您的收藏中包含很多文档,则可以使用方法3。