Firestore order by two fields

Update:

I didn't test this well enough to see that is doesn't produce the desired ordering. The OP asked the question again and got an answer from a Firebase team member:

Because Cloud Firestore doesn't support ordering by a different field than the supplied inequality, you won't be able to sort by name directly from the query. Instead you'd need to sort client-side once you've fetched the data.


The API supports the capability you want, although I don't see an example in the documentation that shows it.

The ordering of the query terms is important. Suppose you have a collection of cities and the fields of interest are population (h1) and name (h2). To get the cities with population in range 1000 to 2000, ordered by name, the query would be:

citiesRef.orderBy("population").orderBy("name").startAt(1000).endAt(2000)

This query requires a composite index, which you can create manually in the console. Or as the documentation there indicates, the system will help you:

Instead of defining a composite index manually, run your query in your app code to get a link for generating the required index.