【问题标题】:Do Firestore imports merge or override collections?Firestore 导入是否合并或覆盖集合?
【发布时间】:2023-03-31 05:23:01
【问题描述】:

假设我有当前的 Firestore 数据:

COLLECTION_1
  DOC_A
  DOC_B
  DOC_C
COLLECTION_2
  DOC_X

我有一些导出的数据,即:

COLLECTION_1
  DOC_B        // DOC_A IS NOT HERE
  DOC_C
  DOC_D        // DOC_D IS AN "EXTRA"

// COLLECTION_2 IS MISSING

COLLECTION_3   // THERE IS AN "EXTRA" COLLECTION
  DOC_3

当我导入数据数据时会发生什么?是否会发生某种“合并”,或者我的整个 Firestore 将按原样替换为导入的数据?我猜DOC_DCOLLECTIO_3 肯定会被添加。但是DOC_ACOLLECTION_2(导出数据中缺少的)在导入后是否仍然存在?

PS:我是在完全导入(即:所有集合)的上下文中问这个的。


要导入特定集合,似乎需要使用导出特定集合的导出,并且需要使用gcloud 将其导入回来。 Web 控制台仅允许完全导入。无论如何,我认为完整导入上的全局“合并或覆盖”行为可能类似于特定集合上的相同行为。

Docs on import/export

【问题讨论】:

    标签: firebase google-cloud-firestore backup gcloud


    【解决方案1】:

    测试它的速度非常快。结果是

    COLLECTION_1
      DOC_A
      DOC_B
      DOC_C
      DOC_D
    COLLECTION_2
      DOC_X
    COLLECTION_3 
      DOC_3
    
    

    一切都在文档中发生。提到的文档说:

    如果已存在具有相同 ID 的文档,则导入覆盖 现有文件。

    如果您的数据库中的文档不受导入影响,它将 导入后保留在您的数据库中。

    而这正是发生的。导入中存在的文档将被覆盖,并且不存在的文档会被添加。如果文档在 Firestore 中但不在导入中,则它保持不变。

    顺便说一句,如果你在 GUI 中测试它,你必须在导入后刷新页面。否则变化是不可见的(至少它发生在我身上)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 2012-11-03
      相关资源
      最近更新 更多