Wie an einem einfachen Beispiel: Dokument in MongoDB Java driver 3

was ist die idiomatischen Weg zu einem einfachen Beispiel: ein Dokument mit version 3 des mongodb-java-Treiber (speziell die v3.0.1)?

Haben wir eine Sammlung für Sitzungen und, wenn eine neue Sitzung wird angelegt oder geändert werden können, wollen wir an einem einfachen Beispiel: in einem Betrieb anstatt zur Abfrage, ob ein Dokument existiert und dann entweder einfügen oder ersetzen.

Unserer alten upsertion code die scala-Treiber casbah 2.7.3. Es sah aus wie:

import com.mongodb.casbah.MongoCollection
import com.mongdb.DBObject
val sessionCollection: MongoCollection = ...
val sessionKey: String = ...
val sessionDocument: DBObject = ... //Either create a new one, or find and modify an existing one

sessionCollection.update(
    "_id" -> sessionKey,
    sessionDocument
    upsert = true
)

In unserem aktuellen Projekt sind wir nur mit der reinen java-3.0.1-Treiber und wir sind mit BsonDocument statt DBObject zu machen, mehr typsafe. Ich habe versucht ersetzen Sie das oben mit so etwas wie:

import com.mongodb.client.MongoCollection
val sessionCollection: MongoCollection = ...
val sessionKey: String = ...
val sessionDocument: BsonDocument = //Either create a new one, or find and modify an existing one

val updateOptions = new UpdateOptions
updateOptions.upsert(true)

sessionCollection.updateOne(
    "_id" -> new BsonString(sessionKey),
    sessionDocument,
    updateOptions
)

Dies wirft den Fehler "java.lang.IllegalArgumentException: Ungültige BSON-Feldnamen ...". Der Fehler ist bedeckt diese Frage aber die op in dieser Frage, gar nicht versucht, an einem einfachen Beispiel: in einem Betrieb - Sie wurden mit Hilfe von Kontext, um zu entscheiden, ob zu ersetzen/aktualisieren/einfügen etc...

Ich bin glücklich mit dem, code-Beispiele in scala oder java.

Dank!

InformationsquelleAutor rmin | 2015-06-03
Schreibe einen Kommentar