gpt4 book ai didi

javascript - 在 Firestore 中,如何在不为每个键创建索引的情况下执行涉及映射中键的复合查询?

转载 作者:可可西里 更新时间:2023-11-01 01:18:07 24 4
gpt4 key购买 nike

在 Firestore 中,如何在不为每个键创建索引的情况下执行涉及映射中键的复合查询?

例如,考虑一个包含博客文章的集合,每个博客文章都有类别。

Post {
title: ..
...
categories: {
cats: true
puppies: true
}
}

为了以分页的方式查询特定类别的帖子,我们会做这样的事情:

let query = db.collection(`/posts`)
.where(`categories.${categoryId}`, '==', true)
.orderBy('createdAt')
.startAfter(lastDate)
.limit(5);

但是这似乎需要为每个单独的类别创建一个复合索引(categories.<categoryId>createdAt)。有什么办法解决这个问题吗?

在我的例子中,为每个类别创建复合索引是不可行的,因为类别是用户生成的,并且很容易超过 200(Firestore 中复合索引的限制)。

最佳答案

这可以通过将每个类别的值设置为您要排序的内容来实现。 Firestore 有一个 guide涵盖了这一点。

Post {
title: ..
...
categories: {
cats: createdAt
puppies: createdAt
}
}

let query = db.collection(`/posts`)
.where(`categories.${categoryId}`, '>', 0)
.orderBy(`categories.${categoryId}`)
.startAfter(lastDate)
.limit(5);

关于javascript - 在 Firestore 中,如何在不为每个键创建索引的情况下执行涉及映射中键的复合查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50980243/

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