簡體   English   中英

在Firebase中查詢日期范圍和時間范圍

[英]Query date range AND time range in firebase

我想查詢我的數據集以查找在日期范圍和位置范圍(geohash范圍)內發生的結果。 我正在努力尋找一個好的解決方案。

我正在使用GeoFire,並嘗試了各種按日期或位置分類數據的方法。 每天為每個節點構建一個節點並在內部創建散布geohash很容易,但是例如,如何在不下載所有5000個結果的情況下分頁瀏覽該數據,例如在紐約市呢?

如果我可以先在geohash上排序,然后在日期上排序,這將很容易實現,但是我不能在firebase或任何NoSQL數據庫中做到這一點。

一定有人遇到過這種多范圍查詢問題,希望您能分享所學到的知識。

謝謝

每天為每個節點構建一個節點並在內部創建散布geohash很容易,但是例如,如何在不下載所有5000個結果的情況下分頁瀏覽該數據,例如在紐約市呢?

如果我誤解了您的問題,請告訴我。 您能否為代表特定日期的節點構造一個DatabaseReference,創建一個GeoFire對象和一個GeoQuery,並每天重復一次?

DatabaseReference ref = FirebaseDatabase.getInstance().getReference("path/to/dayNode");
GeoFire geoFire = new GeoFire(ref);
GeoQuery geoQuery = geoFire.queryAtLocation(new GeoLocation(37.7832, -122.4056), 0.6); // Use this for addGeoQueryEventListener() or something else
// See https://github.com/firebase/geofire-java

這樣一來,您只能下載37.7832,-122.4056附近0.6公里內的位置。 為防止一次下載太多結果,請從較小的半徑開始並從此開始增加?

附帶說明一下,我相信Firebase Firestore允許多個游標條件,例如:

db.collection("locations")
    .orderBy("locationhash")
    .orderBy("date")
    .startAt(locationHash, startDate)
    .limit(25);

不幸的是,除非您擴展在GeoFire或GeoFirestore中完成的工作,否則我無法在按日期和分頁進行排序時指定半徑。 希望其他人有更好的主意。

暫無
暫無

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

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