“不同字段的范围过滤器”限制的解决方法?

时间:2017-12-29 19:14:24

标签: firebase google-cloud-firestore

新手到这里的firestore,并努力克服不同领域限制的范围过滤器。

用例是存储和检索日历解决方案的事件/事件数据。

日历视图可以是不同的周,月等,即,每个特定视图都有一个已定义的开始和结束时间戳。

存储事件具有开始时间戳和结束时间戳。

我需要查询所有开始,结束或跨越视图开始和结束时间戳的事件。

使用sql后端实现这一点很简单,但是对于firestore,不同字段上的范围过滤器似乎使这不可能吗? 有什么想法可以解决这个问题吗?或者是否计划在firestore中支持这种功能?

BR 斯蒂芬

1 个答案:

答案 0 :(得分:2)

当我第一次遇到这个问题时,首先要了解为什么存在此限制。是的,这在SQL数据库中可能是微不足道的,但SQL数据库不会像Firestore那样扩展。 Firestore可能由Google Big Table支持,because of the way that indexing works,当在不同的属性上使用范围过滤器时,它不会扩展。从本质上讲,Firestore不会让你做一些在应用扩展时会困扰你的事情。

我能看到的最佳选择是做两个查询,然后将结果合并到一个集合中。这是一些sudo代码:

let eventsStartingIn2017 = calendar_events.where("start_date", ">=", "1/1/2017").where("start_date", "<=", "31/12/2017")
let eventsEndingIn2017 = calendar_events.where("end_date", ">=", "1/1/2017").where("end_date", "<=", "31/12/2017")

let 2017Events = new Set();
2017Events.add(eventsStartingIn2017);
2017Events.add(eventsEndingIn2017);