我想实现一个删除方法,删除集合中的所有文档。我正在使用mongo db和Spring Data。这可以使用Mongo shell中的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();
使用:
Bson filter = new Document();
collection.deleteMany(filter);
Query
是spring-data-mongodb的一部分,如果你不能使用MongoTemplate
,可能Query
也是无关紧要的。
使用MongoRepository的deleteAll()
。利用场景后面的mongoTemplate来调用remove
方法。
从调用方法someRepository.deleteAll()
其他答案已经注意到,Drop集合可能是有效的。为此,您需要直接使用MongoTemplate并使用实体类或集合名称调用dropCollection
。