如何避免Firestore中的无穷组合索引

时间:2019-03-26 02:51:01

标签: json performance google-cloud-firestore maps structure

我正在做一个社交媒体,在我的帖子中有“标签”(实际上是无限的,因为它们超过200个),我希望我的用户同时过滤标签和日期,例如:

myRef.where(“ tag” ==“ tagName”)。orderBy('date','asc')

但是...我确实有无数个tagName,这让我感到震惊,我无法处理。

我应该创建一个截面为1m的自定义地图吗? 我应该创建一个包含数据的自定义ID吗??? 我如何才能将数据asc与这些查询混合或将两种或多种类型混合在一起?

1 个答案:

答案 0 :(得分:0)

您所拥有的查询要求在tag + date上具有索引,而在tagName + date不需要

但是,如果要保留每个文档的标签列表,则需要将它们存储在数组中,然后使用array-contains检查文档是否具有特定标签。要查看字符串值tagName的数组中是否存在tag,请查询:

myRef.where("tag", "array-contains", "tagName").orderBy('date', 'asc')

有关更多信息,请参见Better Arrays in Cloud Firestore!