我想在我的集成测试之前在我的 mongo 中删除数据库。是否可以通过 spring mongo 做到这一点?
如果它现在不可用,是否可以从 spring mongo 以某种方式获取 com.mongodb.DB 对象,所以我可以调用它的 dropDatabase() ?
我想在我的集成测试之前在我的 mongo 中删除数据库。是否可以通过 spring mongo 做到这一点?
如果它现在不可用,是否可以从 spring mongo 以某种方式获取 com.mongodb.DB 对象,所以我可以调用它的 dropDatabase() ?
以防万一有人需要信息,请注意自 3.0 以来 MongoDatabase api 中没有 dropDatabase() 方法,因此您必须改为编写以下代码:
mongoTemplate.getDb().drop();
我正在使用的一个稍微干净的解决方案是使用 MongoDbFactory 对象,如下所示:
mongoDbFactory.getDb().dropDatabase();
终于找到了!
从 mongodb 外壳:
> db.dropDatabase
function () {
if (arguments.length) {
throw "dropDatabase doesn't take arguments";
}
return this._dbCommand({dropDatabase:1});
}
结合mongoOperations 的 executeCommand:
@Autowired private MongoOperations ops;
@BeforeMethod
public void dropDb() {
this.ops.executeCommand("{dropDatabase:1}");
}
mongoTemplate.getDb().dropDatabase();