使用Springdata mongo Query删除集合中的所有文档

问题描述 投票:2回答:2

我想实现一个删除方法,删除集合中的所有文档。我正在使用mongo db和Spring Data。这可以使用Mongo shell中的db.myCollection.remove({})来完成。但是我想在我的数据访问层中编写一个方法来执行此操作。我没有在我的Dao类中使用MongodbTemplate。我想知道如何使用Query执行此操作。

Query query = new Query();

有人可以告诉我我该怎么做。

mongodb spring-data-mongodb
2个回答
2
投票

你最好删除整个集合(如果可能)而不是删除所有文档。为了性能和分配的缘故。

您可以尝试以下方法:

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

如果你想删除所有(我认为),而不是:

collection.drop();

使用:

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

Query是spring-data-mongodb的一部分,如果你不能使用MongoTemplate,可能Query也是无关紧要的。


2
投票

使用MongoRepository的deleteAll()。利用场景后面的mongoTemplate来调用remove方法。

从调用方法someRepository.deleteAll()

其他答案已经注意到,Drop集合可能是有效的。为此,您需要直接使用MongoTemplate并使用实体类或集合名称调用dropCollection

© www.soinside.com 2019 - 2024. All rights reserved.