导出特定的Firestore子集合

A S*_*ars 5 export google-cloud-firestore

我正在尝试使用beta版本的Firestore导出工具在Firestore中导出/导入特定的子集合。

例如,如果我有一个

  • 公司
  • 公司/ {company} /用户
  • 团队
  • 团队/ {team} /用户

我只想获取公司集合及其所有子集合,我想这样做:

gcloud beta firestore export gs://my-bucket-name/fs_backups/companies --collection-ids='companies','users'
Run Code Online (Sandbox Code Playgroud)

我会得到companiescompanies/{company}/usersteams/{company}/users

我正在尝试所有这些组合:

... -collection-ids='companies/{id}/users'
... -collection-ids='companies/./users'
... -collection-ids='companies/.*/users'
... -collection-ids='companies/*/users'
... -collection-ids='companies/**/users'
... -collection-ids='companies/__name__/users'
Run Code Online (Sandbox Code Playgroud)

和其他一些结果,但结果却是空的(但没有失败)。

集合ID是否有一种符号来指定我要导出的子集合?

Dav*_*sti 7

我遇到了同样的问题。问题在于,在您的示例中,至少有两个子集合的名称为users。出口功能,在选择特定的集合/子校集时,“展开”数据(即,子校集将被导出到其自己的文件夹中,而不是父收集中的子文件夹)。这使得具有相同名称的子集合不明确。修复方法是对子集合和集合进行唯一命名(如果您打算稍后将其导入 BigQuery,这也将很有帮助)。

  • 这很糟糕。因为这意味着我必须“重新创建”已经包含数千个文档的集合。此外,它会弄乱我的云函数触发器,就像`.document('users/{userId}/messages/{messageId}')`。您知道我是否可以将通配符与名称结合使用吗?例如`.document('users/{userId}/{userId}_messages/{messageId}')` (8认同)
  • 我完全同意之前的评论。Firestore 需要一种更精细的方式来指定要导出和导入的集合(即父集合或子集合)。现在已经是 2021 年了。我可以提出功能请求来实现这一目标吗? (3认同)
  • 确实很糟糕。这是 2019 年初发布的,现在已经进入 2020 年中期了。如果这仍然属实,有更​​新吗? (2认同)