4

I have a nested collection in firestore as shown below:

db-dev
        user
             user-id-1
                       events-collection
                       ...
             user-id-2
                       events-collection
                       ...
             user-id-3
                       events-collection
                       ...

I want to query all the events from events-collection. However, I also want to keep the above schema as the admin needs to view all events-collection and specific users need to view their specific collection.

The query I write now looks something like this:

const uids = await getAllUserIds(); //Returns all user ID
const promises = uids.map(element => db.collection(`db-dev/user/${element}/events-collection/`).get())

const documents = await Promise.all(promises);

I am not very confident if this is the most optimized way to query the data or should I use something else? Can somebody please help me out here?

0

1 Answer 1

7

To read from all events-collection collections in one go, you can use a collection group query.

For example, without any conditions, this reads all documents from all collections named events-collection:

db.collectionGroup('events-collection').get()

If you want to read only the events-collection collections under /user, you can use the trick that Sam showed here: CollectionGroupQuery but limit search to subcollections under a particular document

Sign up to request clarification or add additional context in comments.

1 Comment

Hey! Thank you for quick response but the user-ids are dynamic won't that affect this?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.