按整数对文档进行排序Firestore Kotlin

时间:2020-05-26 10:58:22

标签: firebase kotlin google-cloud-firestore

我想按img降序对文档进行排序。 我试图在Firebase控制台中添加索引。这是“索引”标签中的屏幕截图:user Ascending img descending

这是我的数据库结构: database structure

这是我的代码:

db.collection("images").whereEqualTo("user", uid).orderBy("img", Query.Direction.DESCENDING).get()
    .addOnSuccessListener {
        if (it.isEmpty) {
            Log.i("Image", "Sorry, no image")
        } else {
            for (task in it) {
                Log.i("Image", task.get("img").toString())
            }
        }
    }

这是日志:

I/Image: 2
I/Image: 1
I/Image: 3
I/Image: 4
I/Image: 6
I/Image: 7

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

请注意,如documentation所述,您所遇到的行为可能有两种解释:

  1. 如果您的过滤器具有范围比较(<,<=,>,> =),则您的第一次订购必须在同一字段上

  2. 您不能通过等号(=)或in子句中包含的任何字段对查询进行排序。

基于文档中提供的以下代码段:

citiesRef.whereGreaterThan("population", 100000).orderBy("population").limit(2)

您可以尝试以下方法(但是由于2,我不确定是否可以使用):

db.collection("images").whereEqualTo("user", uid).orderBy("user").orderBy("img", Query.Direction.DESCENDING).get()
    .addOnSuccessListener {
        if (it.isEmpty) {
            Log.i("Image", "Sorry, no image")
        } else {
            for (task in it) {
                Log.i("Image", task.get("img").toString())
            }
        }
    }