android 查询嵌套Map中具有时间戳字段的firestore文档

cu6pst1q  于 2023-01-19  发布在  Android
关注(0)|答案(1)|浏览(118)

我的文档结构类似于-

fieldOne = "value1"
fieldTwo = "value2"
fieldThree = "value3<Map1 = flights <Map2 = [flight_number] = <travel_date = TimeStamp>>>"

这里的flight_number(下图中的LH760)键是动态的,我事先不知道它的值。

我想查找travel_date等于今天的所有文档。我怎样才能最有效地编写查询(在Kotlin中)?
我尝试通过created过滤(作为我自己的教程-而不是作为我的需求的解决方案),但没有返回文档。所以我无法绕着如何在这样一个复杂的嵌套结构中进行查询-

.whereEqualTo("created", LocalDateTime.now())

请注意:created时间戳可以不同于travel_date时间戳。

k5ifujac

k5ifujac1#

Firestore API无法查询数组中的特定字段或Map的动态键。
你可以做的是修改/扩充数据模型以适应你的用例,因为你想查询旅行日期,所以添加一个顶级数组字段travel_dates,在这里存储所有的travel_date值,这些值也存储在flights字段中,格式类似于"2023-01-17"(2023年1月17日)。
有了这个字段,您就可以查询新的travel_dates字段,以获取今天的所有文档,内容如下:

.whereArrayContains("travel_dates", "2023-01-17")

相关问题