2017-08-23 124 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