Firestore возвращает не все документы для коллекции - PullRequest
0 голосов
/ 03 апреля 2020

Я пишу план полета для android. Для использования определенного REST API мне нужны идентификаторы ИКАО для каждого аэропорта. Я пытаюсь получить около 14 тысяч документов из пожарного магазина и сопоставить их с объектами. Структура моего пожарного депо: firebase structur

В результате я каждый раз получал в ответ 7698 документов.

    val db = Firebase.firestore
    val airports = db.collection("airport")
    val myColl : ArrayList<AirportDAO> = arrayListOf()
    val start = System.currentTimeMillis()
    var end : Long

    airports.get().addOnSuccessListener {
        end = System.currentTimeMillis()
        Log.d("firebase", (end - start).toString())
        val docs = it.documents
        Log.d("size", it.size().toString())     // <-- 7698
        for (doc in docs) {
            val a = doc.toObject(AirportDAO::class.java)
            if (a != null)
                myColl.add(a)
        }

        Log.d("size", myColl.size.toString())  // <-- 7698

    }

Метод get() должен возвращать все DocumentSnapshots. Есть ли какие-то ограничения, о которых я не знаю?

@ Редактировать: Конец моей коллекции. «Фильтруй» означает «Сортировать» на польском языке sh

enter image description here

1 Ответ

2 голосов
/ 03 апреля 2020

Добавление слушателя по следующей ссылке:

val airports = db.collection("airport")

Это означает, что вы хотите получить все AirportDAO объекты, существующие в вашей коллекции airport. Если размер вашего списка myColl равен 7698, это означает, что вам будет предъявлено обвинение в операции чтения 7698 при доступе к этой коллекции, что, на мой взгляд, довольно много.

В моей коллекции ровно 14110 документов.

Нет, нет! У вас ровно 7698, это то, что говорит ваш код.

Если вы хотите отфильтровать результаты, вы должны использовать Query. Если вам все они понадобятся, вы создадите тяжелый трафик c с Firestore.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...