Il n'y a pas de moyen direct de tirer/supprimer par index de tableau. En fait, il s'agit d'un problème ouvert http://jira.mongodb.org/browse/SERVER-1014 , vous pouvez voter pour.
La solution consiste à utiliser $unset puis $pull :
db.lists.update({}, {$unset : {"interests.3" : 1 }})
db.lists.update({}, {$pull : {"interests" : null}})
Mise à jour :comme mentionné dans certains des commentaires, cette approche n'est pas atomique et peut provoquer des conditions de concurrence si d'autres clients lisent et/ou écrivent entre les deux opérations. Si nous avons besoin que l'opération soit atomique, nous pourrions :
- Lire le document depuis la base de données
- Mettre à jour le document et supprimer l'élément du tableau
- Remplacer le document dans la base de données. Pour s'assurer que le document n'a pas changé depuis que nous l'avons lu, nous pouvons utiliser la mise à jour si le modèle actuel décrit dans la documentation mongo