I'll offer a longer explanation than a comment and a current lack of searching that turns up anything more than a reference to a feature request in JIRA.
So as the documentation for positional $
operator says, you only get the first match, and this is currently how things work by design.
Probably your best approach is to keep issuing the same update until the response from the write concern result says that nothing was actually updated. That will in each turn set every element that matches in your array to the desired value.
Otherwise, pull the entire document with a find request, alter the required elements in the array in code and then save it back.
Vote up the referenced feature request and cross your fingers that someone finds it important enough to include in a near future release. But there is no method otherwise to allow you do to this.
NOTE: The feature request is currently four years old so I would not be holding my breath for it to happen.