Firestore 导入是合并还是覆盖集合?

Do Firestore imports merge or override collections?

假设我有当前的 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_D 并且肯定会添加 COLLECTIO_3。但是 DOC_ACOLLECTION_2(导出数据中缺少的那些)在导入后还会存在吗?

PS: 我是在完全导入的情况下问这个问题的(即:所有集合)。


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

Docs on import/export

测试速度非常快。结果是

COLLECTION_1
  DOC_A
  DOC_B
  DOC_C
  DOC_D
COLLECTION_2
  DOC_X
COLLECTION_3 
  DOC_3

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

If a document with the same ID already exists, the import overwrites the existing document.

If a document in your database is not affected by an import, it will remain in your database after the import.

这确实发生了。覆盖导入中存在的文档,添加不存在的文档。如果文档在 Firestore 中但不在导入中,它保持不变。

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