在Firestore中,如何查询数字范围内的数字范围内的物品

时间:2019-10-18 03:44:25

标签: firebase google-cloud-firestore

我正在尝试在Firestore中找出最好的方法是查询一周的日期数据。我的对象跨越数天,我想知道在特定时间范围内包含哪些元素。现在,我的数据有一个开始和结束日期,由其unix ms值表示。一些开始于查询开始日期之前,而某些结束于查询结束日期之后。如何正确查询此数据或对数据进行非规范化。

例如,我想检索该月10月中发生的所有项目。某些元素的开始日期可能是9月30日-10月2日,有些可能是10月31日-11月2日。如何构造/查询数据以包括那些极端情况?

 {
  active: true,
  address: {
    addressLine1: "5 May Way",
    city: "Wilmington",
    state: "Ny",
    zip: "40778"
  },
  createdOn: 1570558984758,
  day: 1570507200000,
  event: {
    startDate: 1570558945155,
    endDate: 1570559945160,
    utcOffset: -240
  },
  id: "6FXSCc8BFqww59PT0HyE",
  name: "Test",
  portalId: "iHvdmHxsQsQvoaQIO0r4",
  statusId: 0,
}

1 个答案:

答案 0 :(得分:0)

从我的头顶开始,您可能会包含一个事件发生月份的字段(例如occurrence)。该字段将是一个数组,您可以通过查询来确定该事件是否在特定月份发生,您可以使用where子句,其中该字段将包含您要查找的月份。像where('occurrence', 'array-contains', 'October')之类的东西。

也就是说,您可以将event数组添加到occurrence字段中,如下所示:

event: {
    startDate: xxxxxxxxx,
    endDate: xxxxxxxxx,
    utcOffset: xxx,
    ocurrence: [September, October]
}

这将处理常规情况和边缘情况。