Right now with an $all query we just look up the first field in the index. We could instead try out all/some number of fields using the query optimizer.
Indexing arrays and embedded JSON objects - use cardinality in query on multiple elements instead of first element in the match criteria (e.g. $all operator)
Use heuristics to choose selective index bounds within $all
Optimise $all/$and to select smallest subset as initial index bounds