Firebase 如何执行collectionGroup查询,但获取子集合所在的文档?

Firebase 如何执行collectionGroup查询,但获取子集合所在的文档?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,如何执行collectionGroup查询,但获取子集合所在的文档。我的数据结构如下:Users(collection)->UID(doc)->privateData(collection)->UID(doc) 我想根据privatedatacollection中的UID doc中的字段进行查询,但我想要Users collection中的UID doc中的实际数据,您不能像这样跨多个集合进行查询。如果您希望数据来自另一个子集合,则您的集合组查询将需要改为指向该另一个子集合。这意味着您可能必须将

如何执行collectionGroup查询,但获取子集合所在的文档。我的数据结构如下:
Users(collection)->UID(doc)->privateData(collection)->UID(doc)

我想根据
privatedatacollection
中的
UID doc
中的字段进行查询,但我想要
Users collection中的
UID doc
中的实际数据,您不能像这样跨多个集合进行查询。如果您希望数据来自另一个子集合,则您的集合组查询将需要改为指向该另一个子集合。这意味着您可能必须将privateData集合中的字段复制到Users集合中。在像Firestore这样的nosql数据库中,字段数据的重复很常见


如果出于任何原因(如隐私)无法复制该数据,则需要分别查询每个相关文档,有效地将每个用户文档连接到privateData中的匹配文档。

根据您的数据模型,您必须在子对象中对子集合的父文档进行引用,或者获取文档并使用文档快照,您可以调用其父引用
类似这样:
querySnapshot.docs()[x].snapshot.getRef().getParent()

因此,基本上没有好的方法,例如,获取距离我10英里半径内的所有人的名字和姓氏,如果位置数据存储在子集合中?我需要做的是集合组查询,它将为我提供我想要获取的人的所有UID,然后为每个UID调用一个getDocument?对于当前的数据模型,一次查询无法获取它。正如我在回答中所说,您需要复制数据或单独获取相关文档。您建议我如何更改数据模型?我在private子集合中有位置数据,因此复制数据对于我来说是不可能的,因为我会将查询所需数据中的字段复制到users集合中的文档中。