web-dev-qa-db-fra.com

Supprimer tous les documents d'une collection avec Springdata mongo Query

Je veux implémenter une méthode de suppression qui supprime tous les documents d'une collection. J'utilise mongo db avec Spring Data, ce qui pourrait être fait en utilisant db.myCollection.remove ({}) dans Mongo Shell. Mais je veux écrire une méthode dans ma couche d'accès aux données pour ce faire. Je n'utilise pas MongodbTemplate dans ma classe Dao. Je veux savoir comment procéder avec Query.

Query query = new Query();

Quelqu'un pourrait-il me dire comment je peux le faire?.

9
Kepler

Vous feriez mieux de supprimer toute la collection (si possible) que de supprimer tous les documents. Pour des raisons de performance et d'allocation.

Vous pouvez essayer quelque chose comme:

    MongoClient mongoClient = new MongoClient(new ServerAddress("localhost", 27017));
    MongoDatabase db = mongoClient.getDatabase("test");
    MongoCollection collection = db.getCollection("test_collection");
    collection.drop();

Si vous voulez tout supprimer (je pense), au lieu de:

collection.drop();

utilisation:

Bson filter = new Document();
collection.deleteMany(filter);

Query fait partie de spring-data-mongodb, si vous ne pouvez pas utiliser un MongoTemplate, probablement Query n'est pas non plus pertinent.

3
Ori Dar

Utilisez deleteAll() de MongoRepository. Utilise mongoTemplate derrière la scène pour appeler la méthode remove .

De la méthode d'appel someRepository.deleteAll()

La collecte des gouttes peut être efficace comme l'a noté une autre réponse. Pour cela, vous devrez utiliser MongoTemplate directement et appeler dropCollection avec la classe d'entité ou le nom de la collection.

3
user2683814

Vous pouvez supprimer la collection et la recréer:

mongoTemplate.dropCollection("collectionName");
mongoTemplate.createCollection("collectionName");
1
Riccardo Bonesi