在多个 firestore 集合中使用 orderby

Posted

技术标签:

【中文标题】在多个 firestore 集合中使用 orderby【英文标题】:Use orderby in more than one firestore collection 【发布时间】:2020-07-14 10:22:50 【问题描述】:

假设我有 3 个集合 'col1' 、 'col2' 和 'col3' 每个集合包含数千个文档 我想根据时间戳以降序将所有文档数据推送到单个对象数组中。 firestore orderBy 命令只能用于单个集合那么有什么方法可以从 firestore 推送数据,使数组默认排序?

【问题讨论】:

【参考方案1】:

使用 Firestore,您一次只能查询一个集合中的文档。如果您对三个集合中的文档感兴趣,则需要三个查询。如果您希望对整组文档进行排序,则必须在所有查询完成后在客户端对它们进行排序。

【讨论】:

【参考方案2】:

最有效的方法是合并排序的结果。在您的情况下,时间复杂度将是 O(n),因为您有恒定数量的数组。

如果您有兴趣,这里有一个有趣的post 对算法的解释。否则,只需使用lodash.merge 然后对其进行排序。时间复杂度将保持 O(n),因为排序是 O(log(n))。除非您的收藏中有数百万个条目,否则这并不重要。

【讨论】:

以上是关于在多个 firestore 集合中使用 orderby的主要内容,如果未能解决你的问题,请参考以下文章

需要从 Firestore 的多个集合中查询

Firestore 数据建模,每个用户拥有多个集合

如何使用 Flutter 在 Firestore 中删除集合中的所有文档

如何使用 Flutter 在 Firestore 中检查多个文档中的特定值

Cloud Firestore 实时更新能否监听多个集合,即集合名称中有一个变量? [复制]

Firestore:如何在集合中获取随机文档