Java Firestore如何从文档引用包含特定查询路径的集合中查询数据

Java Firestore如何从文档引用包含特定查询路径的集合中查询数据,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,如何从文档引用包含特定路径的集合中查询数据 这是我的Firestore数据库,归档用户是文档引用类型,映射了来自其他集合的文档引用 这里我需要从userinfo集合中获取所有数据,其中用户文档引用包含特定路径,例如:player/8SLuNWrI09UIuUfNe7ZR/playerinfo 我尝试了以下查询,但似乎不起作用: Query query = mFirebaseFirestore.collection("userinfo").whereGreaterThanOrEqualTo("us

如何从文档引用包含特定路径的集合中查询数据

这是我的Firestore数据库,归档用户是文档引用类型,映射了来自其他集合的文档引用

这里我需要从userinfo集合中获取所有数据,其中用户文档引用包含特定路径,例如:player/8SLuNWrI09UIuUfNe7ZR/playerinfo

我尝试了以下查询,但似乎不起作用:

Query query = mFirebaseFirestore.collection("userinfo").whereGreaterThanOrEqualTo("user", "player/8SLuNWrI09UIuUfNe7ZR/playerinfo");
从查询中获取数据的代码:

query.addSnapshotListener(new EventListener<QuerySnapshot>() {
                @Override
                public void onEvent(QuerySnapshot queryDocumentSnapshots, FirebaseFirestoreException e) {
                    //queried data here
                }
 });
对于要查询具有文档引用类型的Firestore的文档,没有可用的示例

请帮助我查询文档引用具有特定路径的集合中的文档列表


提前感谢

您只需按文档在数据库中的位置获取文档:

mFirebaseFirestore.collection("userinfo").document("8SLuNWrI09UIuUfNe7ZR").get()

如果您知道要获取的特定文档,则无需查询。

您在Firestore的官方文档中找不到任何示例,因为遗憾的是,没有包含方法可以帮助您验证字符串是否是引用的一部分,引用是文档的一个属性

但是,如果您想获取playerinfo集合下存在的所有文档,则只需使用get调用。除非需要实时获取数据,否则不要使用addSnapshotListener

有一种解决方案,您需要将用户属性转换为字符串类型,并使用如下所示的查询:

Query query = = mFirebaseFirestore.collection("userinfo").whereEqualTo("user", "player/8SLuNWrI09UIuUfNe7ZR/playerinfo");
但请记住,只有当属性用户持有一个字符串类型的值,该值等于:

player/8SLuNWrI09UIuUfNe7ZR/playerinfo`
而不是:


还有一种方法可以解决这个问题。查询整个集合,获取用户属性的所有值,并通过将它们从引用转换为字符串将它们添加到列表中。最后,只需迭代列表并对每个元素使用contains方法。

您解决了这个问题吗?@AlexMamo不,我需要精确的解决方案。您的答案并不像我想要的那样精确,目前我没有得到唯一的文档,我需要获取属于特定集合的所有文档列表注意:特定文档引用路径中的集合例如:player/8SLuNWrI09UIuUfNe7ZR/playerinfo playerinfo是特定文档8SLuNWrI09UIuUfNe7ZR下的集合。在这里,我需要获得playerinfo集合下的所有文档
player/8SLuNWrI09UIuUfNe7ZR/playerinfo/qY0D7Vef...
                                       ^      ^