Firestoreは、コレクションのためではないすべての文書を返します

Embid123:

私はアンドロイドのための飛行計画を書いています。特定のREST APIを使用するために私は各空港のためのICAO識別子を必要としています。私はfirestoreから14K程度documnetsを取得し、オブジェクトにマップしようとしています。私のfirestoreの構造:firebase structur

その結果、私はお返しにexacly 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を返す必要があります。私は知りません任意の制限はありますか?

@Edit:私のコレクションの終わり。ポーランドで「ソート」「Filtruj」手段

ここでは、画像の説明を入力します。

アレックス・マモ:

以下の参考文献にリスナーを追加します。

val airports = db.collection("airport")

これは、すべて取得すること希望を意味しAirportDAO、あなたの内に存在するオブジェクトairportのコレクションを。あなたのサイズ場合はmyCollリストである7698、それはあなたが課金されますことを意味7698あなたが私の意見ではかなり多くあり、そのコレクションにアクセスするときの読み出し動作。

私は私のコレクションに正確に14110文書を持っています。

いいえ、あなたはしないでください!あなたはあなたのコードが言うものだという、まさに7698を持っています。

あなたは結果をフィルタリングする場合は、あなたが使用する必要がありますQueryあなたは常にそれらのすべてをする必要があります場合は、Firestoreで大量のトラフィックを作成します。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=398193&siteId=1