2017-08-23 4 views
-1

Ich versuche die Mongo Oplog Sammlung auf unbestimmte Zeit zu beenden. Der Code, den ich derzeit verwende, ist wie folgt.bekomme MongoDatabase mit Federdaten 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(); 

Ich versuche, die gleiche Umsetzung mit Feder Daten, bei denen die Mongo uri in der Eigenschaftendatei angegeben werden zu bekommen. Daher muss ich auf MongoDatabase oder MongoClient zugreifen.

Im Frühjahr mit MongodbFactory-Klasse versucht, aber es gibt eine Instanz des Typs DB zurück, die eine alte Mongo-Implementierung für den Zugriff auf Mongo ist.

Wie kann ich MongoDatabase/MongoCollection/MongoClient mit Federdaten verwenden?

+0

Google ist dein Freund. –

+0

Abhijit Sarkar. Ich habe hier erst eine Frage gestellt, nachdem ich danach gesucht habe. Wenn Sie glauben, dass es so einfach ist, diese Antwort in Google zu bekommen, dann geben Sie hier die Antwort. – samo

+0

Habe gerade, und es dauerte weniger als 10 Minuten. Der Grund, warum ich es vorher nicht getan habe, ist, dass du keinerlei Anstrengung von dir gezeigt hast. –

Antwort

0

MongoClient erstreckt Mongo, so

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

Wenn Sie nicht wollen, direkt

/* 
* Factory bean that creates the com.mongodb.Mongo instance 
*/ 
@Bean 
public MongoClientFactoryBean mongo() { 
    MongoClientFactoryBean mongo = new MongoClientFactoryBean(); 
    mongo.setHost("localhost"); 
    return mongo; 
} 

bearbeiten zu Mongo Klassen-Code:

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

Verbrauch:

@Autowired 
private Mongo mongo; 

MongoOperations mongoOps = new MongoTemplate(mongo, "databaseName"); 

bearbeiten:

@Autowired 
private MongoClient mongoClient; 

MongoOperations mongoOps = new MongoTemplate(mongoClient, "databaseName"); 
+0

Die Verwendung der Klasse "com.mongodb.Mongo" wird nicht mit dem neuesten Mongo-Treiber unterstützt. Das ist der springende Punkt meiner Frage. Spring-data-mongodb stellt MongoDbFactory bereit, das wiederum com.mongodb.DB bereitstellt. Und deine Antwort verwendet com.mongodb.Mongo. Alle diese Klassen (sowie BasicDBObject usw.) werden normalerweise nicht mit den neuesten Treibern verwendet. Ich versuche einen Weg zu finden, wo die neueren Klassen wie MongoDatabase/MongoCollection/MongoClient verwendet werden können. 1) Sie müssen verstehen, was gefragt wird, bevor Sie voreilige Schlüsse ziehen. 2) Sie müssen sich auf mongo java Treiber aktualisieren. – samo

+0

@samo Sie möchten 'MongoClient' verwenden, aber das erweitert' Mongo', von dem Sie behaupten, dass es nicht empfohlen wird? Sie können eine Instanz von 'MongoClient' von dort zurückgeben, wo' Mongo' zurückgegeben wird, wenn Sie dazu neigen. 1) Leseverständnisproblem? 2) Sie müssen sich auf Vererbung 101 aktualisieren. –

+0

https://www.mongodb.com/blog/post/introducing-mongoclient .. Lesen Sie die Zeilen, "Diese Klasse, Mongo, wird den alten Standard beibehalten und veraltet werden "und" Die alte Klasse wird für eine ganze Weile (aber nicht für immer) bleiben, so dass wir den alten Code jetzt nicht brechen werden ". – samo

Verwandte Themen