我希望实现一个删除集合中所有文档的方法。我正在使用Spring Data和Mongo数据库。在Mongo shell中,可以使用db.myCollection.remove({})来实现此操作。但是我想在数据访问层中编写一个方法来执行此操作。我没有在Dao类中使用MongodbTemplate。我想知道如何使用Query来实现这一点。
Query query = new Query();
有人能告诉我怎么做吗?
我希望实现一个删除集合中所有文档的方法。我正在使用Spring Data和Mongo数据库。在Mongo shell中,可以使用db.myCollection.remove({})来实现此操作。但是我想在数据访问层中编写一个方法来执行此操作。我没有在Dao类中使用MongodbTemplate。我想知道如何使用Query来实现这一点。
Query query = new Query();
有人能告诉我怎么做吗?
MongoTemplate
。mongoTemplate.remove(new Query(), collectionName);
deleteAll()
方法。在内部使用mongoTemplate调用remove
方法。someRepository.deleteAll()
删除集合可能会更有效率,正如其他答案所指出的那样。为此,您需要直接使用MongoTemplate,并使用实体类或集合名称调用dropCollection
。mongoTemplate.dropCollection("collectionName");
mongoTemplate.createCollection("collectionName");
为了性能和分配的考虑,最好删除整个集合(如果可能的话),而不是删除所有文档。
你可以尝试以下操作:
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的一部分,如果您不能使用,那么Query
也是无关紧要的。
MongoTemplate.dropCollection(collectionName)
。
但要求删除所有文档,可以使用
MongoTemplate.remove(new Query(), collectionName)
或
CrudRepository.deleteAll()
。mongoTemplate.collectionNames
.forEach { mongoTemplate.dropCollection(it) }
Query
类吗?它是来自org.springframework.data.mongodb.repository
还是org.springframework.data.mongodb.core.query
包? - harshavmb