![](/img/trans.png)
[英]How can I minimize firestore reads in the "setUsername" scenario?
[英]How many reads in Firestore am I performing?
假設我在 firestore 中有一個名為text_messages
的集合,其中包含 500 個文檔,並且我知道其中一個文檔的 doc_id。
我想執行以下代碼來獲取該文檔的數據:
doc = db.collection("text_messages").document("my_doc_id").get()
data = doc.to_dict()
所以我的問題是:這算作 1 次讀取還是 500 次讀取? 我是從計費的角度詢問並希望優化成本。
由於接受的答案很容易被誤解,因此我發布了一個替代方案。
Firestore 對在服務器上為您讀取的每個文檔收費。
由於您的示例只讀取一個文檔,因此無論您從中讀取它的集合中有多少文檔,您都需要為讀取的一個文檔付費。
執行查詢不會讀取每一個可能符合條件的文檔,而是使用索引來確定哪些文檔符合條件,然后只讀取這些文檔。
因此,在 Firestore 查詢中,您(最多)會為查詢返回的文檔數量付費,而不是為數據庫必須考慮的文檔數量付費。
Firebase 對每個查詢計為一次讀取,無論您的集合有 500 個文檔還是 5000 個文檔都沒有關系。 單個查詢算作一次讀取,即使它必須通過 500 個文檔在雲 Firestore 中搜索到 go。
另請記住,在偵聽查詢時,每次添加或更新結果集中的文檔時,您都需要為讀取付費。
// Reading a specific document,
db.collection("text_messages").document("my_doc_id")
.get() // One read
// Using where query
db.collection("text_messages").where("sender", "==", "jack sparrow")
.get() // One read
// Reading a whole collection
db.collection("text_messages")
.get() // One read
你可以在這里閱讀更多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.