【问题标题】:Cloud Firestore - Date range query where documents have a date rangeCloud Firestore - 文档具有日期范围的日期范围查询
【发布时间】:2020-03-19 17:48:58
【问题描述】:

我想对具有多个范围的对象集合进行日期范围查询。确切的用例是

  • 每个对象代表一个重复事件。该事件可以在多个日期发生。因此,请考虑以下几点:

    object = {'inventoryOnDates': ['17-10-2019', '18-10-2019', '24-10-2019' ...]}

  • 我在客户端有一个日历,用户可以在其中选择日期范围。

  • 对应这个日期范围,我需要获取所有对象。

我在想

  1. 对选定日期范围的每个条目进行调用,并在客户端处理聚合。问题是会有很多读取,因为我们将在重叠的日期范围内多次读取相同的列表对象。

  2. 尝试使用 elasticsearch/Algolia 之类的服务来完成此操作

任何建议都会非常有帮助!

谢谢!

【问题讨论】:

    标签: firebase google-cloud-firestore range


    【解决方案1】:

    据我所知,没有直接的方法可以创建此查询。

    通常,当我需要执行这样的日期范围查询时,我最终会在文档中存储粒度较小的日期,例如盘点发生的月份(和/或几周)。然后我可以查询具有用户选择的任何库存日期的文档,并在客户端进行额外的过滤。

    如果用户选择多个月(或几周),您可能仍需要多个查询。但这通常比在他们选择的范围内每天执行一个单独的查询要好一些。

    当然,这一切都取决于使用模式。如果您的用户通常选择几天,那么像现在这样使用天粒度可能没问题。

    【讨论】:

    • 感谢您的回复!据我了解,您的建议是:在我的 Firestore 对象中,我以较小的粒度存储对象,例如周。这可以是一个新的聚合标签。在客户端,对于给定的范围,我获得了相应周的所有对象。不利的一面是,如果我的库存是一天级别的,那么我的每个对象都会更加强大,并且具有有关一周中所有日期的信息。所有额外的过滤都将在客户端。
    • 没错。您将在文档中以各种粒度级别存储其他字段,然后在客户端进行最终过滤
    猜你喜欢
    • 2019-08-16
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多