簡體   English   中英

對一個或多個 Firestore 集合中的文檔進行計數的最有效方法

[英]Most efficient approach to count documents in one or more Firestore collection(s)

我正在開發一個交付應用程序,我想獲取管理員分析的計數(訂單數量,通過簽證支付的訂單數量等......)。 我試圖閱讀所有文檔並獲取快照計數,但我發現這會花費我大量的閱讀時間,如果數據集很大,它會減慢我的應用程序。 因此,我創建了一個名為 counts 的集合,並創建了一個雲 function 來偵聽文檔創建並增加計數集合中用戶文檔中的計數字段,它運行良好,但我想知道它是否會花費我一大筆錢如果有更好的解決方案。 注意:我會聽 5+ collections

這是我的 function:

const functions = require('firebase-functions');

// The Firebase Admin SDK to access Firestore.
const admin = require('firebase-admin');
admin.initializeApp();

    var firestore = admin.firestore();
 // Listens for any document created in the users collection
exports.createUser = functions.firestore
    .document('users/{userId}')
    .onCreate((snap, context) => {
 firestore.collection('counts').doc('users').update({ count: admin.firestore.FieldValue.increment(1) })
return 'done';
});

我創建了一個雲 function 來監聽文檔創建並增加計數集合中用戶文檔中的計數字段。

這確實是滿足您要求的最佳解決方案之一。 請注意,如果寫入“主集合”(即 5 個以上集合)的頻率非常高,以至於計數器文檔的更新次數可能超過每秒一次,您可以使用一組 分布式計數器

我想知道這是否會花費我一大筆錢

每次創建文檔時,更新計數器的成本對應於一次 Firestore 寫入和一次 Cloud Function 調用(可能還有一些出站網絡成本,具體取決於您的 Firestore 數據庫和 Cloud Function 的位置,請參見此處此處)。 會不會花“一大筆錢”? 這完全取決於在“主集合中創建的文檔數量以及您想要讀取這些計數器的次數。

如果你一年讀一次這些計數器,查詢 5 collections 的所有文檔可能會更實惠。 但是,如果您每天或每周閱讀一次,並且那些 collections 有“很多文檔”,那么使用雲 Function 可能會更實惠。 根據您是唯一知道(或唯一能夠估計的)的一些數字,您可以進行數學計算以評估首選方法。

暫無
暫無

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

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