Home > database >  How to count the total elements of a paged and filtered collection in Firestore
How to count the total elements of a paged and filtered collection in Firestore

Time:10-03

As the title suggests I would like to know how to get the total elements count of a paginated and filtered collection.

I have seen that many recommend, for the counting of the documents of the collection, to create a statistics document with the counter of the documents in the collection.

But if I need to implement a paged and filtered retrieval, how can I have the count of the total filtered items without having to retrieve them all?

CodePudding user response:

I have seen that many recommend, for the counting of the documents of the collection, to create a statistics document with the counter of the documents in the collection.

Yes, that is correct. It's very costly to count the number of documents within a collection, each time you need that total number. So it's best to have a field in a document that contains that number and increment it each time a new document is added and decrement it each time a document is deleted.

But if I need to implement a paged and filtered retrieval, how can I have the count of the total filtered items without having to retrieve them all?

There is no way you can know ahead of time, how many documents exist in a collection without reading them all or reading a document that contains that information, as explained above.

The pagination in NoSQL databases is a little different than in SQL databases. In all modern applications, we paginate the data using an infinite scroll. If you understand Java, then you can take a look at my answer in the following post:

Here is also the official documentation regarding Firestore pagination that can be achieved using query cursors:

If you understand Kotlin, I also recommend you check the following resource:

  • Related