是否有任何方法根據值獲取一定數量的Firebase數據條目?例如,如果某個條目有100個孩子,每個孩子都有一個數字值,是否有任何方法可以請求十個最高值的孩子?獲取按值排序的Firebase數據
編輯:我意識到我可以簡單地請求父級並遍歷數據的整個層次結構,直到找到具有最大值的十,但這會浪費用戶的數據,特別是如果父級包含數千兒童。
是否有任何方法根據值獲取一定數量的Firebase數據條目?例如,如果某個條目有100個孩子,每個孩子都有一個數字值,是否有任何方法可以請求十個最高值的孩子?獲取按值排序的Firebase數據
編輯:我意識到我可以簡單地請求父級並遍歷數據的整個層次結構,直到找到具有最大值的十,但這會浪費用戶的數據,特別是如果父級包含數千兒童。
當您存儲記錄時,請使用setPriority。然後,你可以如下檢索那些具有最高值:
firebaseRef.child.limit(10).on(...);
或者你可以如下分頁或搶一組特定的:
firebaseRef.endAt(250).limit(10).on(...);
隨着firebase你正在處理一個nosql數據庫。在使用nosql數據庫時,請在寫入數據時生成報告,而不要在讀取數據時生成報告。
例如。對於你提到的情況,保持總是包含前十條記錄(或指向它們的指針)的另一個對象。
每次您向數據庫寫入記錄時,請檢查前十位的列表,如果記錄也屬於那裏,則在這種情況下,執行必要的操作。
這種方法比遍歷數據庫更快,效率更高。
這個好職位從火力點:https://開頭WWW。 firebase.com/blog/2013-04-12-denormalizing-is-normal.html –
我喜歡那種特定情況下的解決方案,但我們假設我想要標記以特定字母開頭的記錄的前十個值。我正在尋找實現一種搜索,返回給定查詢的前十個項目。看起來這個解決方案只適用於我只關心數量有限的十大列表。 – jadengeller
這只是一個例子。如果數據庫的索引功能不適合您的目的,那麼當您將數據寫入數據庫時,這個想法就是構建自己的索引。 – Santosh
所以我應該設置優先級與值相同? – jadengeller
如果該值是一個與您想要排序/查詢的條件完全匹配的基元,那麼是的。 – Kato
似乎有點多餘,但我想它會起作用。我是否以某種不適合的方式使用Firebase?我會更好找到替代後端? – jadengeller