繁体   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