我有一些时间表,其中包含具有此类字段的文档
我想通过运行按route
字段排序并执行相同字段计数的查询来获得流量最高的路由。我的问题是按字段订购后如何计数?这是我现在的查询
scheduleByRoutes() {
return this.afs.collection('schedules', ref => ref.orderBy('route', 'asc')).snapshotChanges();
}
答案 0 :(得分:0)
没有直接方法来计算orderBy()查询返回的每个route
“类别”的文档数。
您应该:
1 /从您的客户端计数它们,重复查询结果。
或
2 /如果您预先知道不同的路由,请对每个route
发出查询,并使用每个QuerySnapshot
的{{3}}方法。您可以使用Promise.all()
并行进行这些调用。
或
3 /例如,为另一个集合中的每个route
维护一些计数器。为此,您将使用一组云功能,这些功能将在创建/修改/删除后更新计数器。
请注意,方法#1和#2将耗费集合中每个文档的读取文档费用。如果您的收藏中包含很多文档,则可以使用方法3。