gpt4 book ai didi

javascript - 我如何在 firestore 中按日期和位置可用性进行过滤?

转载 作者:行者123 更新时间:2023-11-29 22:46:28 25 4
gpt4 key购买 nike

在我的 Firebase 项目中,我需要查询在特定日期在特定城市有空的所有用户,并按其他一些条件进行排序。

由于我们不能在一个查询中使用多个“array-contains”操作,我尝试了 Firestore 中众所周知的“map-trick”,但现在我向查询添加了排序,这不再是一种选择。

let usersQuery = firestore.collection('Users')
.where('availableInAreaCodes.12345', '==', true)
.where('availableOnDates.2019-10-20', '==', true)
.orderBy('level', 'asc');

有什么想法吗?

最佳答案

感谢@DougStevenson 和@FrankvanPuffelen 的帮助。

我发现在文档数量、非规范化和读/写使用之间进行了很好的权衡。

注意:此解决方案可能不适合您的场景。

我为每个用户文档添加了一个新的子集合“可用性”,并将可用性数据拆分为一年中的几周(旧文档每周删除一次,每周添加一个新文档)。

我将 areaCodes 添加为一个数组,将每个工作日添加为一个字段,并将一组简化的用户数据添加到文档中。

我必须创建总共 44 个复合索引(11 个字段 * 4 个排序组合)。 Firestore 的最大值为每个数据库 200 个。

在我的场景中这是值得的,因为此查询是该应用的一项关键功能。

let usersQuery = firestore.collectionGroup('Availability')
.where('areaCodes', 'array-contains', 'DE-1234')
.where('weekYear', '==', '2019-W42'))
.where('monday', '==', 'available')
.orderBy('userPreview.level', 'asc'

关于javascript - 我如何在 firestore 中按日期和位置可用性进行过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58352282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com