Java 使用spring mongodb清除mongodb
因为在stackoverflow上有很多人,所以我想为我的mongodb应用程序进行junit测试。为此,我让一个实例运行,以便我的测试可以连接。但是我想确保在开始测试时数据库处于空状态 因为我正在使用SpringMongoDB、SpringTest和所有有趣的spring工具,所以我希望找到一个能为我实现这一点的配置,但直到现在都没有成功 谁能给我一个提示,如何以干净的方式实现这一点。我的想法是一个初始化bean,它可以为我实现这一点。但我对这个解决方案不是很满意。有什么建议吗?试试这个:Java 使用spring mongodb清除mongodb,java,spring,mongodb,Java,Spring,Mongodb,因为在stackoverflow上有很多人,所以我想为我的mongodb应用程序进行junit测试。为此,我让一个实例运行,以便我的测试可以连接。但是我想确保在开始测试时数据库处于空状态 因为我正在使用SpringMongoDB、SpringTest和所有有趣的spring工具,所以我希望找到一个能为我实现这一点的配置,但直到现在都没有成功 谁能给我一个提示,如何以干净的方式实现这一点。我的想法是一个初始化bean,它可以为我实现这一点。但我对这个解决方案不是很满意。有什么建议吗?试试这个: @
@Autowired
org.springframework.data.mongodb.core.MongoTemplate mongoTemplate;
.....
mongoTemplate.getDb().dropDatabase();
mongoTemplate.getDb().dropDatabase()代码>
如果不使用索引,则可以提供帮助
如果通过spring data mongodb使用索引,例如@Index
注释,dropDatabase()
也将删除索引
我的解决方案是清理文档:
private void cleanUp() {
for (String collectionName : mongoTemplate.getCollectionNames()) {
if (!collectionName.startsWith("system.")) {
mongoTemplate.getCollection(collectionName).remove(new BasicDBObject());
}
}
}
首先
然后
这是一个不反对的答案:
mongoTemplate.getDb().drop()
对于PHPUnit,我要做的是创建一个名为PHPUnit\u tests
的新数据库,然后我将其删除每个测试,Java在数据库类中应该有一个类似的函数,它表示MongoDB数据库。新版本的名称为mongoTemplate.getDb().drop();谢天谢地,我忘记了索引,花了一个小时来找出为什么在@AfterEach中添加数据库删除代码后重复异常消失了。
private @Autowired Mongo mongo;
private @Autowired MongoDbFactory mongoDbFactory;
mongo.dropDatabase(mongoDbFactory.getDb().getName());