In Firestore, how can you do a compound query involving a key in a map without creating an index for every key?
For example, consider a collection which holds blog posts, and each blog post has categories.
Post {
title: ..
...
categories: {
cats: true
puppies: true
}
}
In order to query posts in a particular category in a paginated way, we would do something like this:
let query = db.collection(`/posts`)
.where(`categories.${categoryId}`, '==', true)
.orderBy('createdAt')
.startAfter(lastDate)
.limit(5);
But it seems that this would require a composite index (categories.<categoryId>
and createdAt
) for every single category. Is there any way around this?
In my case, it isn't feasible to create composite indices for every category since categories are user-generated, and could easily exceed 200 (the limit for composite indices in Firestore).
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…