2017-08-23 28 views
-1

我试图无限期地尾巴mongo oplog集合。我目前使用的代码如下。MongoDatabase与弹簧数据mongodb

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(); 

我试图用弹簧数据,其中蒙戈URI将在属性文件中指定,以获得相同的实现。因此我需要访问MongoDatabase或MongoClient。

在春天尝试使用MongodbFactory类,但它返回一个类型为DB的实例,这是一个用于访问mongo的旧mongo实现。

如何使用spring数据来使用MongoDatabase/MongoCollection/MongoClient。

+0

谷歌是你的朋友。 –

+0

Abhijit Sarkar。我只是在搜索后才提出问题。如果你觉得它很简单,在谷歌得到这个答案,那么你为什么不在这里提供答案。 – samo

+0

刚刚做了,花了不到10分钟。我之前没有这么做的原因是因为你没有表现出你的努力。 –

回答

0

MongoClient延伸Mongo,所以

@Configuration 
public class AppConfig { 
    public @Bean Mongo mongo() throws UnknownHostException { 
     return new Mongo("localhost"); 
    } 
} 

如果你不想代码来蒙戈类直接

/* 
* 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"); 
+0

最新的mongo驱动程序不鼓励使用com.mongodb.Mongo类。这是我的问题的重点。 Spring-data-mongodb提供了MongoDbFactory,它反过来提供了com.mongodb.DB。而你的回答使用com.mongodb.Mongo。所有这些类(以及BasicDBObject等)通常不会与最新的驱动程序一起使用。我试图找到一种可以使用像MongoDatabase/MongoCollection/MongoClient这样的新类的方法。 1)在跳到结论之前,你需要了解正在问什么。 2)你需要更新你自己的mongo java驱动程序。 – samo

+0

@samo你想使用'MongoClient',但是扩展'Mongo',你声称不推荐?如果你愿意,你可以从'Mongo'返回的地方返回'MongoClient'的实例。 1)阅读理解问题? 2)你需要更新自己的继承101. –

+0

https://www.mongodb.com/blog/post/introducing-mongoclient ..阅读行,“该类,Mongo,将保持旧的默认值,并成为弃用“和”老班将保留一段时间(但不是永远),以便我们现在不会破坏旧代码“。 – samo