Go语言 是否可以在firestore中查询特定的文档ID?

rsl1atfo  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(127)

因此,我有userProject集合,其中包含projectId和userId。我通过使用获取某个特定用户的所有项目

query = db.Collection("userProject").Where("user_id","==",userId)

字符串
现在,我得到了相关用户的projectIds。但是由于可能有许多项目id(>30),所以我不能使用“in”操作符,如

query = db.Collection("project").Where("id","in",projectIds)


我能想到的一个解决方案是用这些id创建docRef

for _, id := range projectIds {
    docRefs = append(docRefs, db.Collection("project").Doc(id))
}


然后使用

db.GetAll(context.Background(), docrefs)


但是我必须在那些特定的项目中使用过滤器和分页。所以我需要做一个查询,这样我以后就可以在同一个查询中使用StartAfterLimitWhere。我怎么能做到这一点,在firestore与golang?

y53ybaqx

y53ybaqx1#

使用当前的模式,您尝试做的事情是不可能的(对一个大的已知项列表进行分页)。
最简单的做法是将用户id复制到projects集合中的文档中,然后只查询该集合对用户id的过滤。像这样的复制数据(去规范化)在nosql类型的数据库中非常常见,以便实现更有效的查询。

相关问题