我正在尝试在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,
}
答案 0 :(得分:0)
从我的头顶开始,您可能会包含一个事件发生月份的字段(例如occurrence
)。该字段将是一个数组,您可以通过查询来确定该事件是否在特定月份发生,您可以使用where
子句,其中该字段将包含您要查找的月份。像where('occurrence', 'array-contains', 'October')
之类的东西。
也就是说,您可以将event
数组添加到occurrence
字段中,如下所示:
event: {
startDate: xxxxxxxxx,
endDate: xxxxxxxxx,
utcOffset: xxx,
ocurrence: [September, October]
}
这将处理常规情况和边缘情况。