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

Mongodb 使用Springdata mongo Query删除集合中的所有文档,mongodb,spring-data-mongodb,Mongodb,Spring Data Mongodb,我想实现一个delete方法,删除集合中的所有文档。我正在使用MongoDB和Spring数据。这可以使用MongoShell中的db.myCollection.remove({})来完成。但我想在我的数据访问层中编写一个方法来实现这一点。我在Dao类中没有使用MongodbTemplate。我想知道如何使用Query实现这一点 Query query = new Query(); 有人能告诉我怎么做吗。你最好删除整个收藏(如果可能的话),而不是删除所有文档。为了性能和分配 您可以尝试以下方法

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

Query query = new Query();

有人能告诉我怎么做吗。

你最好删除整个收藏(如果可能的话),而不是删除所有文档。为了性能和分配

您可以尝试以下方法:

    MongoClient mongoClient = new MongoClient(new ServerAddress("localhost", 27017));
    MongoDatabase db = mongoClient.getDatabase("test");
    MongoCollection collection = db.getCollection("test_collection");
    collection.drop();
如果您确实要删除所有(我认为),而不是:

collection.drop();
使用:

Query
是spring数据mongodb的一部分,如果不能使用
MongoTemplate
,那么
Query
可能也不相关

使用MongoRepository的。在幕后使用mongoTemplate调用该方法

从调用方法
someRepository.deleteAll()


正如其他答案所指出的,滴落收集可能是有效的。为此,您需要直接使用MongoTemplate并使用实体类或集合名称调用。

您可以删除集合并再次创建它:

mongoTemplate.dropCollection("collectionName");
mongoTemplate.createCollection("collectionName");
你可以直接使用

mongoTemplate.remove(newquery(),collectionName);

如果您在模式中有相当大的更改,最好是删除集合。
MongoTemplate.dropCollection(collectionName)
。 但要求是删除您使用的所有文档
MongoTemplate.remove(新建查询(),集合名称)

crudepository.deleteAll()

您能详细介绍一下
Query
导入的类吗?它是来自
org.springframework.data.mongodb.repository
还是
org.springframework.data.mongodb.core.query
包?您使用的是mongoTemplate吗?根据我的要求,我不能删除集合。我需要保留这些收藏品。因此,我需要一种在不删除集合的情况下删除集合中的整个文档的方法。根据我的要求,我不能删除集合。我需要保留这些收藏品。因此,我需要一种在不删除集合的情况下删除集合中整个文档的方法。确保使用deleteAll第一个选项如果使用deleteAll(),则无法删除集合和架构。它只删除文档。如果方案中的任何更改不影响新方案。
mongoTemplate.dropCollection("collectionName");
mongoTemplate.createCollection("collectionName");