因此我们知道firebase不会让多个孩子订购。我正在寻找一个过滤我的数据的解决方案,所以最后我只能将它限制为1。因此,如果我不想获得最低价格,那将会是这样的:
ref.orderByChild("price").limitToFirst(1).on...
问题是我还需要按日期(时间戳)
过滤它所以我只会这样做:
.orderByChild("timestamp").startAt(startValue).endAt(endValue).on...
所以现在这是我的查询然后我正在运行所有结果并检查具有最低价格的那一行。我的数据非常大,包含大约100,000行。我可以随便改变它。
获取最低价格但所有时间戳的第一个查询导致返回的行可能是最低价格但不在我的日期范围内。但是,与第二个查询相比,此查询只需要2秒,其中包括我的代码需要20个才能获得最低价格。
那么,您对如何做到最好的建议是什么?我知道我可以创建另一个包含时间戳和价格的索引,但这些索引是不同的数据值,这使得它无法实现。
完整的数据结构:
country
store
item
price,
timestamp
为了让它更加清晰,我有2个内循环遍布所有国家,然后遍布所有商店。所以真正的查询是这样的:
ref.child(country[i]).child(store[j]).orderByChild("timestamp").startAt(startValue).endAt(endValue).on...
谢谢!