如何从文档引用包含特定路径的集合中查询数据?
这是我的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的示例。
请帮助我从文档参考具有特定路径的集合中查询文档列表。
预先感谢
答案 0 :(得分:0)
您只想按其在数据库中的位置获取文档:
mFirebaseFirestore.collection("userinfo").document("8SLuNWrI09UIuUfNe7ZR").get()
如果您知道要提取的特定文档,则无需查询。
答案 1 :(得分:0)
在Firestore的官方文档中找不到任何示例,因为不幸的是,没有contains()
方法可以帮助您验证String是否属于引用(属于文档的属性)。
但是,如果要获取playerinfo
集合下存在的所有文档,则只需使用get()
调用。除非您需要实时获取数据,否则不要使用addSnapshotListener()
。
有一种解决方案,您需要将user
属性转换为String类型并使用如下查询:
Query query = = mFirebaseFirestore.collection("userinfo").whereEqualTo("user", "player/8SLuNWrI09UIuUfNe7ZR/playerinfo");
但是请记住,只有属性user
的String类型的值等于:
player/8SLuNWrI09UIuUfNe7ZR/playerinfo`
和不是:
player/8SLuNWrI09UIuUfNe7ZR/playerinfo/qY0D7Vef...
^ ^
您还可以通过其他方式解决此问题。查询整个集合,获取user
属性的所有值,然后将它们从List
转换为String,将它们添加到Reference
中。最后,只需遍历列表并在每个元素上使用contains()
方法。