Is there an ideal way to do the above while making efficient use of
RUs?
Maybe it's hard to say that there is a best way to make efficient use of RUs and improve the query performance.
Based on your situation,of course, you could use SQL query to get data with specific filters. I'm just offering several ways to improve your query performance as below:
1.Add a partition key.
If your data is partitioned, then when you provide the partition key with sql,it could only scan the specific partition so that it will save RUs. Please refer to the document.
2.Use recent sdk.
The Azure Cosmos DB SDKs are constantly being improved to provide the best performance. See the Azure Cosmos DB SDK pages to determine the most recent SDK and review improvements.
3.Exclude unused paths from indexing for faster writes.
Cosmos DB's indexing policy also allows you to specify which document paths to include or exclude from indexing by leveraging Indexing Paths (IndexingPolicy.IncludedPaths and IndexingPolicy.ExcludedPaths). The use of indexing paths can offer improved write performance and lower index storage for scenarios in which the query patterns are known beforehand.
4.Use continuation token if the data is too large.
Paging the data with continuation token to improve query performance.Doc:
https://www.kevinkuszyk.com/2016/08/19/paging-through-query-results-in-azure-documentdb/
More details, please refer to here.