Je suis très nouveau sur MongoDB et MongoDB Compass.
J'ai environ 1000 enregistrements dans une collection de clients. Comment puis-je supprimer tous les enregistrements à la fois via la boussole MongoDB.
Merci beaucoup,
Si vous n'avez pas d'index sur cette collection, vous pouvez simplement supprimer la collection entière comme indiqué dans le docs .
Si vous avez des index, cependant, supprimer la collection supprimera également les index, mais il est généralement beaucoup plus rapide de supprimer le tout, puis de recréer la collection et les index que de supprimer tous les documents à l'aide de remove (db.collection.remove({})
), car cela devrait aller document par document en libérant l'espace qu'ils prennent et en supprimant leur entrée sur les index, le cas échéant.
La seule mise en garde de cette approche est que dans un cluster fragmenté, vous pouvez supprimer une collection et, même si la suppression est signalée comme réussie, la collection peut toujours être présente dans certains nœuds, provoquant des problèmes lors de la recréation.
Vous pouvez en savoir plus sur ce problème encore de OPEN
et sa solution de contournement sur https://jira.mongodb.org/browse/SERVER-17397 :
RÉSUMÉ DU NUMÉRO
Lors de la suppression d'une base de données/collection dans un cluster fragmenté, même si la suppression est signalée comme réussie, il est possible que la base de données/collection soit toujours présente dans certains nœuds du cluster. Pour le moment, nous déconseillons aux utilisateurs de supprimer une base de données ou une collection, puis de réutiliser l'espace de noms.
IMPACT UTILISATEUR
Lorsque la base de données/collection n'est pas supprimée avec succès dans un nœud donné, les fichiers correspondants continuent d'utiliser l'espace disque dans ce nœud. Tenter de réutiliser l'espace de noms peut conduire à un comportement non défini.
[~ # ~] solutions de contournement [~ # ~]
Pour contourner ce problème, vous pouvez suivre les étapes ci-dessous pour supprimer une base de données/collection dans un environnement fragmenté:
- Supprimez la base de données/collection à l'aide d'un
mongos
.- Connectez-vous au principal de chaque fragment et vérifiez que l'espace de noms a été supprimé. Si ce n'est pas le cas, veuillez le laisser tomber. La suppression d'une base de données (par exemple
db.dropDatabase()
) supprime les fichiers de données sur le disque pour la base de données en cours de suppression.Connectez-vous à un
mongos
, basculez vers la base de donnéesconfig
et supprimez toute référence à l'espace de noms supprimé des collectionschunks
,locks
,databases
etcollections
:Lors de la suppression d'une base de données:
utilisez config db.collections.remove ({_id: /^DATABASE\./}) db.databases.remove ({_id: "DATABASE"}) db.chunks.remove ({ns: /^DATABASE\./}) db.locks.remove ({_id: /^DATABASE\./})Lors de la suppression d'une collection:
utilisez config db.collections.remove ({_id: "DATABASE.COLLECTION"}) db.chunks.remove ({ns: "DATABASE.COLLECTION"}) db.locks.remove ({_id: "DATABASE.COLLECTION"})Connectez-vous à chaque
mongos
et exécutezflushRouterConfig
.