【发布时间】:2012-04-17 07:55:29
【问题描述】:
我想在我的集成测试之前将数据库放到我的 mongo 中。是否可以通过 spring mongo 做到这一点?
如果它现在不可用,是否可以从 spring mongo 以某种方式获取 com.mongodb.DB 对象,所以我可以调用它的 dropDatabase() ?
【问题讨论】:
标签: spring-data-mongodb mongodb-java
我想在我的集成测试之前将数据库放到我的 mongo 中。是否可以通过 spring mongo 做到这一点?
如果它现在不可用,是否可以从 spring mongo 以某种方式获取 com.mongodb.DB 对象,所以我可以调用它的 dropDatabase() ?
【问题讨论】:
标签: spring-data-mongodb mongodb-java
以防万一有人需要信息,请注意,从 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();
【讨论】: