使用spring-mongodb清除mongodb

mib*_*tec 6 java spring mongodb

在我之前有很多人在stackoverflow上我想为我的mongodb应用程序做junit-tests.为此,我让一个实例运行,所以我的测试可以连接.但我想确保数据库在开始测试时处于空状态.

因为我正在使用spring-mongodb,spring-test和所有有趣的弹簧 - 我希望找到一个配置为我做这个,直到现在成功.

任何人都可以给我一个如何以干净的方式实现这一点的提示.我的想法是一个InitializingBean,它为我做了这个.但我对这个解决方案并不满意.有什么建议?

Gen*_*her 8

试试这个:

@Autowired
org.springframework.data.mongodb.core.MongoTemplate mongoTemplate;

.....
mongoTemplate.getDb().dropDatabase();
Run Code Online (Sandbox Code Playgroud)

  • 新版本将其命名为mongoTemplate.getDb()。drop(); (2认同)

Pav*_*kov 5

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());
            }
        }
}
Run Code Online (Sandbox Code Playgroud)