是否可以备份集合的层次结构?
我们将数据存储为:
* users
* user1
* userInfo (on the user1 document)
* accounts
* account1
* account2
* jobs
* job1
* job2
* job3
* user2...
* chats
* chat1
* chat metadata (on the chat document)
* messages
* message1
* message2
* chatUsersInfo
* userInfo1
* userInfo2
* userInfo3 (还有更深层次的子集合)
我在备份作业https://firebase.google.com/docs/firestore/solutions/schedule-export中使用了这个例子
是否有一种方法可以备份现有的数据,而不仅仅是其第一级文档?
是否可以只恢复层次结构的一部分(即还原user1数据)?
是否有办法从备份(即作业)中排除某些集合?
发布于 2020-06-02 10:19:37
只能使用collectionsIds字段筛选特定集合。下面是一个使用命令的示例。
通常,如果您只需要备份特定的数据,则需要创建一个应用程序来进行相关查询,以读取您感兴趣的相关集合或文档,并以您认为更方便的任何地方(例如云存储)保存它。
正如我在前面的问题中所建议的那样,如果您只对整个Fi还原实例中的特定数据进行备份,则需要创建一个应用程序来查询要导出的特定数据(请参考文档获取所需的特定查询:要么在文档中列出子集合,要么从集合组获取多个文档,等等)。
您将无法还原层次结构的特定部分,但您可以以类似的方式进行使用collectionsIds字段只导入一组特定的集合:
gcloud防火墙导入gs://BUCKET_NAME/EXPORT_前缀/-COLLECTION-ID=COLLECTION_ID_1,COLLECTION_ID_2
注意,正如在您的示例共享上解释的那样,您可以使用collectionsIds字段创建一个只包含要导出的集合的列表(因此,如果不添加不想导出的集合,就可以将它们排除在导出操作之外)。
return client.exportDocuments({
name: databaseName,
outputUriPrefix: bucket,
// Leave collectionIds empty to export all collections
// or set to a list of collection IDs to export,
// collectionIds: ['users', 'posts']
collectionIds: []
})https://stackoverflow.com/questions/62127439
复制相似问题