英文:
query for max values among subcollections in firestore
问题
我想在我的应用程序中添加排行榜,其中会显示排名前50名的用户。
我的Firestore数据库结构如下:
用户(集合) -> 用户UID(文档) -> 用户数据(集合) -> 用户UID(文档) -> 字段
其中一个字段名为rank。
现在,我想执行类似这样的操作:
db
.collection("USERS")
.document(UID)
.collection("UserData")
.document(UID)
.orderBy("rank", Query.Direction.DESCENDING)
.limit(50)
.get()
但我知道这不起作用,因为它将查询特定文档,而不是整个USERS集合。
有没有办法在不进入每个文档并获取该值的情况下查找每个用户的排名?还是我必须更改数据库的结构?
谢谢
英文:
I would like to add Leaderboard to my app in which it will show the 50 top-ranked users.
My firestore is built as follows:
USERS (collections) -> UID (document) -> UserData (collection) -> UID (document) -> fields
one of the fields is called rank.
Now, I had like to perform something like that:
db
.collection( "USERS" )
.document(UID)
.collection("UserData")
.document(UID)
.orderBy( "rank", Query.Direction.DESCENDING )
.limit( 50)
.get()
But I know it is not going to work since it will query the specific document and not the whole collection of USERS.
Is there any way to search what is the rank of each user without going into each document and get that value? Or do I have to change the structure of the database?
Thank you
答案1
得分: 1
如果您想在所有具有相同名称的子集合之间查询文档,您可以执行collection group查询,您可以使用该查询来查找和对所有这些子集合中的文档进行排序。
db
.collectionGroup("UserData")
.orderBy("rank", Query.Direction.DESCENDING)
.limit(50)
.get()
英文:
If you want to query documents among all subcollections of the same name, you would want to do a collection group query, which you can use to find and sort all documents within those subcollections.
db
.collectionGroup("UserData")
.orderBy( "rank", Query.Direction.DESCENDING )
.limit( 50)
.get()
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论