Kep*_*ler 13 mongodb spring-data-mongodb
我想实现一个删除集合中所有文档的删除方法。我在 Spring Data 中使用 mongo db。这可以在 Mongo shell 中使用 db.myCollection.remove({}) 来完成。但是我想在我的数据访问层中编写一个方法来做到这一点。我没有在我的 Dao 类中使用 MongodbTemplate。我想知道如何使用 Query 执行此操作。
Query query = new Query();
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我该怎么做。
Moh*_*Ali 19
您可以MongoTemplate直接使用
mongoTemplate.remove(new Query(), collectionName);
Run Code Online (Sandbox Code Playgroud)
使用 MongoRepository 的deleteAll(). 在幕后利用 mongoTemplate 来调用该remove方法。
从调用方法 someRepository.deleteAll()
正如其他答案所指出的那样,丢弃收集可能很有效。为此,您需要直接使用 MongoTemplate 并dropCollection使用实体类或集合名称进行调用。
您最好删除整个集合(如果可能)而不是删除所有文档。为了性能和分配。
您可以尝试以下操作:
MongoClient mongoClient = new MongoClient(new ServerAddress("localhost", 27017));
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection collection = db.getCollection("test_collection");
collection.drop();
Run Code Online (Sandbox Code Playgroud)
如果您确实想删除所有(我认为),而不是:
collection.drop();
Run Code Online (Sandbox Code Playgroud)
用:
Bson filter = new Document();
collection.deleteMany(filter);
Run Code Online (Sandbox Code Playgroud)
Query是 spring-data-mongodb 的一部分,如果你不能使用 a MongoTemplate,可能Query也无关紧要。
您可以删除该集合并重新创建它:
mongoTemplate.dropCollection("collectionName");
mongoTemplate.createCollection("collectionName");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14406 次 |
| 最近记录: |