MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Dans mongoDb, comment supprimez-vous un élément de tableau par son index ?

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