我正在清理 Firestore 中的旧复合索引时,我意识到我错误地删除了一个复合索引,但我的查询仍然可以完美运行。最初,如果没有该索引,它就无法工作。
这是查询:
const allCredits = await tx.get(
db.collection(`users/${uid}/credits`)
.where('expiresAt', '>', Date.now())
.orderBy('expiresAt', 'desc'),
);
在 Firebase 中删除复合索引时是否存在一些缓存或延迟? 我不想最终陷入该查询突然停止工作的情况,因为某些索引缓存已被清除。它仍然运行良好。有什么想法吗?
谢谢!
您显示的查询不需要任何复合索引。 它仅对一个字段 (expiresAt) 进行过滤和排序,因此它可以使用为每个单独字段创建的默认索引。 只有当有多个字段涉及过滤和排序时才需要复合索引。
来自文档,强调我的:
复合索引基于索引字段的有序列表存储集合中所有文档的排序映射。 注意:每个复合索引最多可以有一个数组字段。
Cloud Firestore 使用复合索引来支持单字段索引尚不支持的查询。
我只能假设您错误地认为这个需要复合索引的特定查询。