首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何处理google Firestore中的外键情况?

如何处理google Firestore中的外键情况?
EN

Stack Overflow用户
提问于 2020-08-29 14:17:59
回答 2查看 218关注 0票数 2

因为Firestore中没有像MYSQL那样的外键功能,所以我不能复制我的一个重要功能,那就是在一个地方更新文件,它将反映在每个地方。此外,Firebase没有一次更新所有文档特定文件的功能。

已经有这样的问题了,但我无法得到我的解决方案。假设我有一百万个文档,其中包含一个文件,它是材料的密度。后来,我发现我的密度值是错误的,所以如何有效地更新所有文档中的值。另外,我不想使用server/admin SDK。

EN

回答 2

Stack Overflow用户

发布于 2020-08-29 14:50:19

如果需要更改100万个文档的内容,则需要查询这100万个文档,迭代结果,然后逐个更新这100万个文档。

没有等价的sql "update where“语句可以在一个查询中更新多个文档。它需要对每个文档进行一次更新。

票数 2
EN

Stack Overflow用户

发布于 2020-08-29 16:40:59

如果不想使用Admin SDK,那么您可以选择更新客户端上densityMaterial属性的值,这可能不是最好的解决方案。但是,如果您可以将更新操作划分为较小的块,则可能会成功。

如果您使用POJO类来映射每个文档,那么您可能会对我在以下帖子中的回答感兴趣:

How to update one field from all documents using POJO in Firestore?

如果你没有使用POJO类,请查看我在以下帖子中的回答:

Firestore firebase Android search and update query

关于成本,您将为每个更新的文档支付一次写操作。如果所有1个MIL文档都将更新,则将向您收取1个MIL写入操作的费用。

编辑:

假设我有一百万个文档,其中包含一个文件,这个文件的密度是材料的密度。,

。后来,我发现我的密度值是错误的,所以如何有效地更新所有文档中的值。

如果所有这1MIL文档都包含一个名为densityMaterial的属性,该属性具有完全相同的值,那么将该属性存储在每个文档中就没有任何意义。您可以创建包含该特定值的单个文档,并且在这1个MIL的每个文档中,只需添加对该文档的引用。DocumentReference是supported data-type。现在,如果您需要更改该值,它将仅导致单次文档写入。

但是,如果densityMaterial属性有不同的值,并且所有值都是错误的,那么数据库没有问题,添加数据的机制/人员有问题。如果您添加了1个MIL不正确的文档,这不是数据库问题。

为什么不选择MySQL?

MySQL不能像Cloud Firestore那样扩展。Firestore只是简单地进行大规模扩展。

我能避免这个问题吗?

是的,您可以使用单个文档购买此类详细信息。

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

https://stackoverflow.com/questions/63644062

复制
相关文章

相似问题

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