How to query data from collection where document reference contain specific path?
这是我的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的示例 .
请帮助我从具有特定路径的文档参考的集合中查询文档列表 .
提前致谢
2 回答
您只想按文件在数据库中的位置获取文档:
如果您知道要获取的特定文档,则无需查询 .
您在Firestore的官方文档中找不到任何示例,但遗憾的是,没有
contains()
方法可以帮助您验证String是否是引用的一部分,这是文档的属性 .但是,如果要获取
playerinfo
集合下存在的所有文档,则只需使用get()
调用 . 除非您需要实时获取数据,否则请勿使用addSnapshotListener()
.有一种解决方案,您需要将
user
属性转换为String类型并使用如下所示的查询:但请记住,只有当属性
user
保存类型为String的值时,才会起作用,该值等于:和 not :
还有一种方法可以解决这个问题 . 查询整个集合,获取
user
属性的所有值,并将它们从Reference
转换为String,将它们添加到List
. 最后,只需遍历列表并在每个元素上使用contains()
方法 .