Google cloud firestore 在Firestore中呈现文档时从另一个集合获取数据的最佳方法?

Google cloud firestore 在Firestore中呈现文档时从另一个集合获取数据的最佳方法?,google-cloud-firestore,nosql,Google Cloud Firestore,Nosql,我在Firestore中有一个Person集合,它有一个ID数组,该数组引用另一个名为tasks的集合。 tasks集合包含所有存在的任务,而array in Person具有属于该人员的特定任务 从特定人员处收集的人员: Firestore-root | --- person (collection) | --- personId (document) | --- t

我在Firestore中有一个Person集合,它有一个ID数组,该数组引用另一个名为tasks的集合。 tasks集合包含所有存在的任务,而array in Person具有属于该人员的特定任务

从特定人员处收集的人员:

Firestore-root
     |
     --- person (collection)
          |
          --- personId (document)
                 |
                 --- taskDoing (field) - Array type
                        |
                        --- (tasksId) 0 - FEFEveDoZOv7WFsQLQvP
                                      1 - DEDSFgefeOv7WFsQLQvP
                                      2 - Wffw3f3333f7WFsQLQvP
任务集合:

Firestore-root
     |
     --- task (collection)
          |
          --- taskId (document)
                 |
                 --- title (field) - String type
                 
因此,在Person集合中,我有一个带有TaskSID的数组,我希望从一个特定的人检索任务数据,例如仅从这些ID检索任务集合中的标题

如何检索数据

我查看了引用字段,但它一次只能指定一个引用值。还有一个可能的办法是,我可以将引用存储在数组中,而不是亲自存储id

比如:


例如,如果你想让你的应用程序显示一个人及其当前任务,而你只想显示任务的名称,那么我很可能会将“着装数据”(任务名称)放入person文档中,这样我就可以通过一次网络呼叫呈现此屏幕。但是,如果您想要更改任务的名称,这将相对昂贵,因为您必须更改包含它的每个人文档。但如果任务名称是永久的,那么我几乎肯定会这样做

如果有大量的着装数据,那么你必须做一些数字运算,看看是否更经济(在工程和美元成本方面),将其全部打包到列表文档(person文档)或单独获取它们。请记住,对于Firestore(以及一般的NoSQL),您最大的成本将是读写操作,而不是文档的大小

task/FEFEveDoZOv7WFsQLQvP/