Dalla documentazione:
{ $pull : { field : {$gt: 3} } } removes array elements greater than 3
Quindi suppongo che tu possa fare qualcosa del genere per ora:
{ $pull : { field : {$gt: 3, $lt: 5} } } // shoud remove elemet in 4 position
Oppure prova ad aggiornare utilizzando operatore di posizione , suppongo che dovrebbe essere qualcosa del genere:
{ $pull : "field.4" }
{ $pull : {"field.$": 4}}
È solo un suggerimento, perché al momento non posso testarlo.
Aggiornamento:
Sembra che tu non possa farlo bene lo sai in un solo passaggio (c'è un tale bug in jira )
Ma puoi rimuovere usando unset element in position e che pull elemets con valore nullo:
{$unset : {"array.4" : 1 }}
{$pull : {"array" : null}}