Er is geen directe manier om te trekken/verwijderen door array-index. In feite is dit een openstaande kwestie http://jira.mongodb.org/browse/SERVER-1014 , u mag erop stemmen.
De tijdelijke oplossing is het gebruik van $unset en vervolgens $pull:
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
Update:zoals vermeld in sommige opmerkingen, is deze benadering niet atomair en kan deze race-omstandigheden veroorzaken als andere clients tussen de twee bewerkingen lezen en/of schrijven. Als de operatie atomair moet zijn, kunnen we:
- Lees het document uit de database
- Werk het document bij en verwijder het item in de array
- Vervang het document in de database. Om ervoor te zorgen dat het document niet is gewijzigd sinds we het hebben gelezen, kunnen we de update gebruiken als het huidige patroon wordt beschreven in de Mongo-documenten