簡體   English   中英

Firestore通過字符串鍵查詢文檔

[英]Firestore Query documents by string key

我有一個像這樣的firestore db結構;

Imgur

如何查詢auctions集合中具有給定cargoOwnerId所有文檔?

我在項目中使用com.google.firebase:firebase-firestore:20.2.0

我在這里通過堆棧溢出看過類似的問題,但沒有成功。

我還閱讀了Google的有關在此處執行此操作的文檔,但是當我運行以下代碼時,似乎沒有任何效果

FirebaseFirestore.getInstance()
.collection("auctions")
.whereEqualTo("cargoOwnerId","ZkYu6H6ObiTrFSX5uqNb7lWU7KG3")
.get()
.addOnCompleteListener(task -> {

     Log.d("Logging", "Size: " + task.getResult().size());


});

我希望返回包含ZkYu6H6ObiTrFSX5uqNb7lWU7KG3作為cargoOwnerId的所有文檔的列表,但它什么也不返回。 大小為0。

我想念什么嗎?

文檔的結構方式以及您要執行的操作都是不可能的。 當您不知道地圖屬性的名稱時,也無法按地圖屬性查詢。 在所有文檔中,地圖屬性的名稱也必須保持一致。

在文檔的頂層,您顯然具有與文檔具有相同ID的單個字段,即地圖。 我根本不清楚,為什么要在文檔中使用單個地圖字段。 在我看來,您不想要一個地圖,而是希望該地圖的所有字段都成為文檔字段。 這將允許您執行您要查詢的查詢。 也許您在填充文檔時犯了一個錯誤。

這個有可能。

嘗試將task.getResult().size()更改為task.size()

例:

db.collection("auctions")
        .whereEqualTo("cargoOwnerId","ZkYu6H6ObiTrFSX5uqNb7lWU7KG3")
        .get()
        .addOnSuccessListener { documents ->

            Log.d("Logging", "Size: " + documents.size());


            for (document in documents) {
                Log.d(TAG, "${document.id} => ${document.data}")

            }
        }
        .addOnFailureListener { exception ->
            Log.w(TAG, "Error getting documents: ", exception)
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM