我试图无限期地拖尾mongo oplog集合。我目前使用的代码如下。
MongoClient mongoClient = new MongoClient(<host>,<27017>);
MongoCollection oplogColl =
mongoClient
.getDatabase("local")
.getCollection("oplog.rs");
MongoCursor oplogCursor =
oplogColl
.find(new Document("ts", filter))
.cursorType(CursorType.TailableAwait)
.noCursorTimeout(true)
.sort(new Document("$natural", 1))
.iterator();
我正在尝试使用spring-data获得相同的实现,其中mongo uri将在属性文件中指定。因此我需要访问MongoDatabase或MongoClient。
在spring中尝试使用MongodbFactory类,但它返回DB类型的实例,这是一个访问mongo的旧mongo实现。
如何使用spring数据使用MongoDatabase / MongoCollection / MongoClient。
答案 0 :(得分:0)
MongoClient
扩展Mongo
,所以
@Configuration
public class AppConfig {
public @Bean Mongo mongo() throws UnknownHostException {
return new Mongo("localhost");
}
}
如果您不想直接编写Mongo类
/*
* Factory bean that creates the com.mongodb.Mongo instance
*/
@Bean
public MongoClientFactoryBean mongo() {
MongoClientFactoryBean mongo = new MongoClientFactoryBean();
mongo.setHost("localhost");
return mongo;
}
修改强>:
@Configuration
public class AppConfig {
public @Bean MongoClient mongo() throws UnknownHostException {
return new MongoClient("localhost");
}
}
用法:
@Autowired
private Mongo mongo;
MongoOperations mongoOps = new MongoTemplate(mongo, "databaseName");
修改强>:
@Autowired
private MongoClient mongoClient;
MongoOperations mongoOps = new MongoTemplate(mongoClient, "databaseName");