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

时间:2018-02-28 11:32:21

标签: mongodb spring-data-mongodb

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

Query query = new Query();

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

5 个答案:

答案 0 :(得分:4)

您可以删除集合并重新创建它:

mongoTemplate.dropCollection("collectionName");
mongoTemplate.createCollection("collectionName");

答案 1 :(得分: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 :(得分:2)

使用MongoRepository' s deleteAll()。在场景后面使用mongoTemplate来调用remove方法。

来自调用方法someRepository.deleteAll()

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

答案 3 :(得分:2)

您可以直接使用MongoTemplate

mongoTemplate.remove(new Query(), collectionName);

答案 4 :(得分:1)

如果架构有重大更改,最好删除该集合。 MongoTemplate.dropCollection(collectionName)。 但要求是删除您已使用的所有文档 MongoTemplate.remove(new Query(), collectionName)CrudRepository.deleteAll()