首页 > 解决方案 > Google Cloud Firestore 'in' Operator 解决方法

问题描述

我正在使用 google cloud firestore 作为颤振应用程序的数据库。我的代码要求我向数据库发出包含 '.where("X", "in", "very-long-list")' 的请求。出现的问题是“in”运算符最多只能组合 10 个相等子句,而我的列表的长度可变,最终可能远大于 10。我正在寻找可能的解决方法。

一个示例语句:

citiesRef.where("state", "in", "[list-of-1000]");

编辑:为了提供更多背景信息,我的项目是一个用户有朋友的社交媒体应用程序。数据库将被重组,以便用户文档具有子集合“朋友”,其中包含包含他们的用户 ID 的文档。用户文档还有一个称为帖子的集合,其中引用了按时间顺序排列的帖子集合。在帖子集合中,每个帖子文档都有一个包含其 UID 的文档。要创建用户的提要,将使用 '.where["UID", "in", ["List-of_friend-UIDs"])' 引用和过滤帖子集合。如果您知道更好的结构,我非常愿意重组我的数据库。

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


如果您必须在“in”查询中使用超过 10 个项目,则需要将其分解为 10 个较小的列表,对每批 10 个执行 1 个查询,然后合并结果。


推荐阅读