Java 使用spring mongodb清除mongodb

Java 使用spring mongodb清除mongodb,java,spring,mongodb,Java,Spring,Mongodb,因为在stackoverflow上有很多人,所以我想为我的mongodb应用程序进行junit测试。为此,我让一个实例运行,以便我的测试可以连接。但是我想确保在开始测试时数据库处于空状态 因为我正在使用SpringMongoDB、SpringTest和所有有趣的spring工具,所以我希望找到一个能为我实现这一点的配置,但直到现在都没有成功 谁能给我一个提示,如何以干净的方式实现这一点。我的想法是一个初始化bean,它可以为我实现这一点。但我对这个解决方案不是很满意。有什么建议吗?试试这个: @

因为在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());