Should I design my Firestore database with different collections for each userId or one collection for all userIds?

Posted on

Question :

I have a Firestore db where I have setup the structure:
registrations/[userId]/symptoms/[documentId]/[some kind of document]

I did like this because the user should only read its own symptoms, and therefore I thought it would be good to separate the symptoms on userId.
The document has no knowledge about the userId.

When I now export it to BigQuery I don’t know how to get the correlation between a document and userId, maybe it is not possible.

Should I instead have it like:
symptoms/[documentId]/[some kind of document with a userId]

And then only filter out the documents for the specific userId?
What is the difference in the number of reads?
I imagine that with my solution right now the user will only read the documents that is under /[userId]/, but with other solution every user has to read every document and then filter? Or is that handled by Firestore, and is not counted as a read?

Answer :

You should have a collection per object type, so it’s easier for you to keep track of what each collection contains.

Each document should have userId, security can be managed with Rules.

Leave a Reply

Your email address will not be published. Required fields are marked *