我想实现一个删除方法,删除集合中的所有文档。我正在使用mongo db和Spring Data。这可以使用Mongo shell中的db.myCollection.remove({})来完成。但是我想在我的数据访问层中编写一个方法来执行此操作。我没有在我的Dao类中使用MongodbTemplate。我想知道如何使用Query执行此操作。
Query query = new Query();
有人可以告诉我我该怎么做。
答案 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()