2016-10-15 1 views
1

Upgrade zuvor mongo-java-driver 3.0.4 Verwendung Wir waren, wo in einem bestimmten Codeblock dieser Implementierung hat -FindOne Implementierung geändert, während Mongo-java-Treiber 3.3.0

DBCollection docCollection = mongoClient.getDB(dbName).getCollection(collectionName); 

Map<String, Object> docMap = doc.toMap(); // where doc is the CustomDocument 

DBObject currentObj = docCollection.findOne(new QueryBuilder().put("id").is(doc.getId()).get()); 
if(currentObj == null) { 
    docCollection.insert(new BasicDBObject(docMap)); 
} else { 
    docCollection.update(currentObj, new BasicDBObject(docMap)); 
} 

Was ich versuche jetzt zu erreichen, ist die Verwendung mongo-java-driver 3.3.0 und aktualisieren Sie den Code, um veraltete Klassen und Methoden zu entfernen. Was ich zu dem obigen Stück Code versucht, entsprechende -

MongoCollection<CustomDocument> docCollections = mongoClient.getDatabase(dbName).getCollection(collectionName, CustomDocument.class); 

Bson filter = Filters.eq("id", doc.getId()); // where doc is the CustomDocument 
FindIterable<Document> documentList = docCollections.find(filter); 
if (documentList == null) { 
    docCollections.insertOne(doc); 
} else { 
    docCollections.findOneAndUpdate(filter, new BasicDBObject(docMap)); 
} 

Was finde ich nach wie vor fehlt die findOne Implementierung aus der Sammlung in meinem Code und die Kontrolle basierte Aktionen für insert und update entsprechend durchgeführt werden.

Jede Lösung/Vorschlag dazu ist zu begrüßen.

Antwort

0

Ich habe eine Lösung gefunden, um mit der Umsetzung in mongo-java-driver 3.3.0 spielen.

Eine einfache Möglichkeit, findOne durchzuführen, ist nun wie folgt -

MongoCollection<CustomDocument> docCollections = mongoClient.getDatabase(dbName).getCollection(collectionName, CustomDocument.class); 
CustomDocument firstDocument = docCollections.find(filter).first(); //first for findOne 
Verwandte Themen