迁移 Firestore 替换字段

J.n*_*erg 1 android kotlin google-cloud-firestore

假设我有一个这样的文件:

Document {
    tags: list<Int> {0,1,2}
}
Run Code Online (Sandbox Code Playgroud)

我想把它改成这样:

Document {
    tags: list<String> {SEASON, TRAINING, TOURNAMENT}
}
Run Code Online (Sandbox Code Playgroud)

我有使用整数列表的活动用户,如何在 Firestore 中针对此问题创建迁移?

我想到的一种解决方案是进行 2 次迁移:

  1. 用于创建一个名为 tagsStrings 的新标签。
  2. 用于删除所有仍有标签的用户。

但是我可以做到 1 吗?

我无法在https://cloud.google.com/firestore/docs/manage-data/move-data上找到相关文档

提前致谢

Dou*_*son 5

Firestore 没有像 SQL 数据库那样的“迁移”。批量修改现有文档中数据的唯一方法是:

  1. 查询要更改的文档
  2. 迭代结果
  3. 用新值更新每个文档

这些任务中的每一项都应该很简单。

您还可以考虑延迟更新每个文档,因为在您的应用程序的正常使用过程中,每个文档都是单独阅读的。因此,如果您的应用读取旧格式的文档,请立即将其更新为新格式。

在每个文档中都有一个专用字段来指示其中包含的数据版本通常很有帮助。因此,最初在每个文档中设置 v=1,分配 v=2 表示文档具有字符串而不是标签数字,然后使用该数字来确定哪些文档尚未迁移。