这个问题是完全相同的副本:
我创建了一个谷歌的火力实时数据库的应用程序(反应母语),其存储用户的个人资料(年龄,性别,在线状态,经/纬COORDS等)。然后我用一个GeoFire功能来找到所有在给定坐标的一定半径内的用户,然后在这些配置文件过滤(即只发现X年龄范围内的男性和在线),然后最后剪下来到最近的100配置文件。这是在火力函数来完成,并返回到用户的手机,所以大部分用户都不会下载100级的用户是适合应用。
我的问题是,随着应用规模,有可能是半径内10,000个用户,所以GeoFire查询抓住重点为所有10,000个用户,那么我要去找档案信息对于那些10,000个用户,然后在逻辑过滤,然后剪下来到最近的100,现在这需要花费大量的时间。
我觉得如果我去了一个传统的关系数据库在AWS上我可以把第一个数据拉在where子句中做过滤,一切都在一个查询。
在解决它的最好方法任何帮助,我或者是用火力不正确或已走了这个错误的方式。
谢谢。
您可以使用firebase.database与limitToLast(100)的方法来限制你的查询,如docs,像这样的查询您的数据库:
var ref = firebase.database().ref("dinosaurs");
ref.orderByChild("height").limitToFirst(100).on("child_added", function(snapshot) {
console.log(snapshot.key);
});