Сортировка документа по целому числу Firestore Kotlin - PullRequest
1 голос
/ 26 мая 2020

Я хочу отсортировать документы по 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 голосов
/ 01 июня 2020

Обратите внимание, что, как указано в документации , может быть два объяснения вашего поведения:

  1. Если у вас есть фильтр с сравнение диапазонов (<, <=,>,> =), ваш первый заказ должен быть в том же поле

  2. Вы не можете упорядочить свой запрос по любому полю, включенному в равенство (=) или в разделе.

На основе следующего фрагмента, предоставленного в документации:

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())
            }
        }
    }
...