首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >修复数据库中的大型数组(最佳实践)

修复数据库中的大型数组(最佳实践)
EN

Stack Overflow用户
提问于 2022-11-17 10:38:09
回答 1查看 55关注 0票数 0

我正在填充一系列的日期和温度,我正在考虑将这些日期和温度存储在Firestore数据库中,以便以后由前端使用以下结构:

代码语言:javascript
运行
复制
{
   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中处理这类数据的最佳实践是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-11-17 17:06:30

Firestore中最基本的查询所需的索引是自动为您创建的。然而,也有一些限制。因此,您将得到以下错误:

实体索引条目太多

因为你击中了文档的最大索引条目数为40,000。如果在数组中添加了太多的元素,或者向文档中添加了太多的字段,则可以达到最大限制。

因此,最有可能的情况是,date数组中存在的元素数+ values数组中存在的元素数大于40k,因此出现了错误。

要解决这个问题,您可以考虑创建两个单独的文档,每个数组一个。如果仍然达到最大限制,则可以考虑每小时创建一个文档,而不是一整天。这样,您将大大减少数组中存在的元素数。

如果您不认为这些解决方案有用,那么您必须设置一些“单字段索引豁免”,以避免上述错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74473963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档