I'm having trouble understanding where the bottlenecks exist relating to reading data from disk in a Mongo database collection. I know indexes are huge factor in optimizing queries, but let's say we have a collection with no indexes and I'm running a simple query in a collection with 25 million records at around 50Gb:
db.customers.find({ first_name: "xyz" })
Of course, this has to run a COLLSCAN, so it's very slow (unless it's cached in memory). But how slow is significant in our case. Running some tests reveal that the machine I run this query on does not peg my available IOPS. On a machine with a max ~10K read IOPS, this simple query is throttled at around 1.2K. Notice the CPU iowait

The query is clearly limited by disk, but it's not utilizing the full potential of what's available on the machine. Interestingly, when I create another database connection and run two queries asynchronously, the IOPS load increases 2x. It seems as though each query can only scan though so much data on disk at a time. What's holding it back when running these queries that don't have indexes?
Longer term, I think coupling an Elasticsearch engine to this will help when attempting complex searching on a lot of diverse data, but I'm really curious why we can't scale any vertically in this case.