我正在填充一系列的日期和温度,我正在考虑将这些日期和温度存储在Firestore数据库中,以便以后由前端使用以下结构:
{
date: ['1920-01-01', '1920-01-02', '1920-01-03', '1920-01-04', '1920-01-05', ...],
values: [20, 18, 19.5, 20.5, ...]
}
这个数组可能考虑了很多年,所以它变得很大,有数千个条目。修复数据库开始抱怨返回too many index entries for entity
错误,即使我上传了数据,用户界面Firebase -> Firebase Database -> Panel View
也会崩溃。即使在少于3000个条目数组时也会发生这种情况。
事实是,数据是在前端使用的,其数组结构非常类似于上面描述的数组结构(我想使用电子图表库来绘制它)。这样,我发现这种结构是更自然的方式,因为任何其他选择都需要将结构反转到前端的数组。
尽管如此,我发现Firestore显然不喜欢这种结构。我该怎么办?在Firestore中处理这类数据的最佳实践是什么?
发布于 2022-11-17 17:06:30
Firestore中最基本的查询所需的索引是自动为您创建的。然而,也有一些限制。因此,您将得到以下错误:
实体索引条目太多
因为你击中了文档的最大索引条目数为40,000。如果在数组中添加了太多的元素,或者向文档中添加了太多的字段,则可以达到最大限制。
因此,最有可能的情况是,date
数组中存在的元素数+ values
数组中存在的元素数大于40k,因此出现了错误。
要解决这个问题,您可以考虑创建两个单独的文档,每个数组一个。如果仍然达到最大限制,则可以考虑每小时创建一个文档,而不是一整天。这样,您将大大减少数组中存在的元素数。
如果您不认为这些解决方案有用,那么您必须设置一些“单字段索引豁免”,以避免上述错误。
https://stackoverflow.com/questions/74473963
复制相似问题