Från dokumentation:
{ $pull : { field : {$gt: 3} } } removes array elements greater than 3
Så jag antar att du kan göra något så här för nu:
{ $pull : { field : {$gt: 3, $lt: 5} } } // shoud remove elemet in 4 position
Eller testa att uppdatera med positionsoperatorn , jag antar att det borde vara något sånt här:
{ $pull : "field.4" }
{ $pull : {"field.$": 4}}
Det är bara ett förslag, eftersom jag inte kan testa det just nu.
Uppdatering:
Det verkar som om du inte kan göra det rätt i ett steg (det finns en sådan bugg i jira )
Men du kan ta bort genom att använda unset element i position och som drar elemets med nullvärde:
{$unset : {"array.4" : 1 }}
{$pull : {"array" : null}}