在对Firestore在查询时必须提供的可能性进行了一些研究之后,一件事引人注目;它不支持在不同字段上使用范围过滤器进行查询。 “而且[它]可能永远都无法使用”。 最常被阅读和建议的解决方案是“重新考虑数据模型”。
考虑到这一点,我正在努力想出一种支持“查询”重叠范围的有效数据结构。一个用例将检索任意时期(如结尾所示)的约会列表(具有任意开始日期和结束日期)。到目前为止,我想出了以下数据结构;
对于创建的每个约会,将存储一个日期图,其中包含开始日期和结束日期之间的所有日期。这样,例如,如果我们查询给定的2018年12月25日至2018年12月26日期间,我们将执行两个单独的查询;
public static void main(String[] args) {
double g = 1 / 3;
System.out.printf("%.2f", g);
}
优点;
缺点;
可以使用什么其他数据结构来建模此类需求? (牢记Firestore的查询功能)
/appointments
...
{},
{
start: "2018-12-24"
end: "2018-12-27"
dates : {
"2018-12-24" : true,
"2018-12-25" : true,
"2018-12-26" : true,
"2018-12-27" : true
}
}
collection1 = ...where(.2018-12-25", "==", "true")
collection2 = ...where("2018-12-26", "==", "true")